Use a scrolllist for output
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 19 Sep 2013 20:05:18 +0000 (13:05 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 19 Sep 2013 20:05:18 +0000 (13:05 -0700)
_Internals.pde
_PandaDriver.pde
_UIFramework.pde
_UIImplementation.pde

index 5c3f7cd5907431266f2d545637eaf83f0b617b5e..16a2eb608e1f1919fd97606d0c500a47de721689 100644 (file)
@@ -116,7 +116,7 @@ void setup() {
     new UIPatternDeck(lx.engine.getDeck(1), "PATTERN B", width-144, 4, 140, 344),
     new UIEffects(width-144, 352, 140, 144),
     new UITempo(width-144, 498, 140, 50),
-    new UIOutput(width-144, 552, 140, 122),
+    new UIOutput(width-144, 552, 140, 106),
     
     uiDebugText = new UIDebugText(4, height-64, width-8, 44),
     uiMapping = new UIMapping(mappingTool, 4, 4, 140, 344),
index 2d28cd693e12bea5c300d0c604dcfbe0ba07f40a..0aca6af10101f7a80ec0b70519e686add8ec5619 100644 (file)
@@ -291,6 +291,10 @@ public static class PandaDriver {
       }
     }
   }
+  
+  public boolean isEnabled() {
+    return this.enabled;
+  }
 
   public void disable() {
     setEnabled(false);
index 7ed25850346f1a9ce7b67c33e8b9eec17cb5c194..c2ac5055ff09052711ddbf155c8192b8375e6f32 100644 (file)
@@ -655,8 +655,11 @@ public class UIScrollList extends UIObject {
         itemColor = pendingColor;
       } else {
         labelColor = #000000;
-        itemColor = even ? #666666 : #777777;
+        itemColor = #707070;
       }
+      float factor = even ? .92 : 1.08;
+      itemColor = color(hue(itemColor), saturation(itemColor), min(100, factor*brightness(itemColor)));
+      
       pg.noStroke();
       pg.fill(itemColor);
       pg.rect(0, yp, w, itemHeight);
index cf81f64fdeb599dbb4322823bacb06c851570420..03379ce81d072740ccefc56b05c700f3cd4aa6ae 100644 (file)
@@ -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-10, 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 {