Use a scrolllist for output
[SugarCubes.git] / _UIImplementation.pde
index c8b99306d3f6eb9a3c4311872f5a21c580687844..03379ce81d072740ccefc56b05c700f3cd4aa6ae 100644 (file)
@@ -95,9 +95,9 @@ class UICrossfader extends UIWindow {
     for (LXTransition t : transitions) {
       items.add(new TransitionScrollItem(t));
     }    
-    new UIScrollList(1, titleHeight, w-2, 60).setItems(items).addToContainer(this);
-    new UIParameterSlider(6, titleHeight + 66, w-12, 24).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this);
-    new UIToggleSet(6, 122, w-12, 20) {
+    new UIScrollList(1, titleHeight, w-2, 120).setItems(items).addToContainer(this);
+    new UIParameterSlider(4, titleHeight + 126, w-10, 24).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this);
+    new UIToggleSet(4, 182, w-10, 20) {
       protected void onToggle(String value) {
         displayMode = value;
       }
@@ -220,21 +220,39 @@ class UIOutput extends UIWindow {
   public UIOutput(float x, float y, float w, float h) {
     super("OUTPUT", x, y, w, h);
     float yp = titleHeight;
+    
+    final UIScrollList outputs = new UIScrollList(1, titleHeight, w-2, 80);
+    
+    List<ScrollItem> items = new ArrayList<ScrollItem>();
     for (final PandaDriver panda : pandaBoards) {
-      final UIButton button = new UIButton(4, yp, w-8, 20) {
-        protected void onToggle(boolean active) {
-          panda.setEnabled(active);
-        }
-      }.setLabel(panda.ip);
-      button.addToContainer(this);
+      items.add(new PandaScrollItem(panda));
       panda.setListener(new PandaDriver.Listener() {
         public void onToggle(boolean active) {
-          button.setActive(active);
+           outputs.redraw();
         }
       });
-      yp += 24;
     }
-  }  
+    outputs.setItems(items).addToContainer(this);
+  } 
+  class PandaScrollItem extends AbstractScrollItem {
+    final PandaDriver panda;
+    PandaScrollItem(PandaDriver panda) {
+      this.panda = panda;
+    }
+    
+    public String getLabel() {
+      return panda.ip;
+    }
+    
+    public boolean isSelected() {
+      return panda.isEnabled();
+    }
+    
+    public void select() {
+      panda.toggle();
+    }
+  } 
 }
 
 class UITempo extends UIWindow {
@@ -243,7 +261,7 @@ class UITempo extends UIWindow {
   
   UITempo(float x, float y, float w, float h) {
     super("TEMPO", x, y, w, h);
-    tempoButton = new UIButton(4, titleHeight, w-8, 20) {
+    tempoButton = new UIButton(4, titleHeight, w-10, 20) {
       protected void onToggle(boolean active) {
         if (active) {
           lx.tempo.tap();
@@ -285,7 +303,7 @@ class UIMapping extends UIWindow {
     mappingTool = tool;
     
     int yp = titleHeight;
-    new UIToggleSet(4, yp, w-8, 20) {
+    new UIToggleSet(4, yp, w-10, 20) {
       protected void onToggle(String value) {
         if (value == MAP_MODE_ALL) mappingTool.mappingMode = mappingTool.MAPPING_MODE_ALL;
         else if (value == MAP_MODE_CHANNEL) mappingTool.mappingMode = mappingTool.MAPPING_MODE_CHANNEL;
@@ -293,25 +311,25 @@ class UIMapping extends UIWindow {
       }
     }.setOptions(new String[] { MAP_MODE_ALL, MAP_MODE_CHANNEL, MAP_MODE_CUBE }).addToContainer(this);
     yp += 24;
-    new UILabel(4, yp+8, w-8, 20).setLabel("CHANNEL ID").addToContainer(this);
+    new UILabel(4, yp+8, w-10, 20).setLabel("CHANNEL ID").addToContainer(this);
     yp += 24;
-    (channelBox = new UIIntegerBox(4, yp, w-8, 20) {
+    (channelBox = new UIIntegerBox(4, yp, w-10, 20) {
       protected void onValueChange(int value) {
         mappingTool.setChannel(value-1);
       }
     }).setRange(1, mappingTool.numChannels()).addToContainer(this);
     yp += 24;
     
-    new UILabel(4, yp+8, w-8, 20).setLabel("CUBE ID").addToContainer(this);
+    new UILabel(4, yp+8, w-10, 20).setLabel("CUBE ID").addToContainer(this);
     yp += 24;
-    (cubeBox = new UIIntegerBox(4, yp, w-8, 20) {
+    (cubeBox = new UIIntegerBox(4, yp, w-10, 20) {
       protected void onValueChange(int value) {
         mappingTool.setCube(value-1);
       }
     }).setRange(1, glucose.model.cubes.size()).addToContainer(this);
     yp += 24;
     
-    new UILabel(4, yp+8, w-8, 20).setLabel("COLORS").addToContainer(this);
+    new UILabel(4, yp+8, w-10, 20).setLabel("COLORS").addToContainer(this);
     yp += 24;
     
     new UIScrollList(1, yp, w-2, 60).setItems(Arrays.asList(new ScrollItem[] {
@@ -321,10 +339,10 @@ class UIMapping extends UIWindow {
     })).addToContainer(this);
     yp += 64;
 
-    new UILabel(4, yp+8, w-8, 20).setLabel("STRIP MODE").addToContainer(this);
+    new UILabel(4, yp+8, w-10, 20).setLabel("STRIP MODE").addToContainer(this);
     yp += 24;
     
-    new UIToggleSet(4, yp, w-8, 20) {
+    new UIToggleSet(4, yp, w-10, 20) {
       protected void onToggle(String value) {
         if (value == CUBE_MODE_ALL) mappingTool.cubeMode = mappingTool.CUBE_MODE_ALL;
         else if (value == CUBE_MODE_STRIP) mappingTool.cubeMode = mappingTool.CUBE_MODE_SINGLE_STRIP;
@@ -333,10 +351,10 @@ class UIMapping extends UIWindow {
     }.setOptions(new String[] { CUBE_MODE_ALL, CUBE_MODE_STRIP, CUBE_MODE_PATTERN }).addToContainer(this);
     
     yp += 24;
-    new UILabel(4, yp+8, w-8, 20).setLabel("STRIP ID").addToContainer(this);
+    new UILabel(4, yp+8, w-10, 20).setLabel("STRIP ID").addToContainer(this);
     
     yp += 24;
-    (stripBox = new UIIntegerBox(4, yp, w-8, 20) {
+    (stripBox = new UIIntegerBox(4, yp, w-10, 20) {
       protected void onValueChange(int value) {
         mappingTool.setStrip(value-1);
       }