Add speed slider, new HeronLX with deltaMs as double
[SugarCubes.git] / _UIImplementation.pde
index 03379ce81d072740ccefc56b05c700f3cd4aa6ae..c223444ef2eb81f0831a96e269cbd2bbea76224c 100644 (file)
@@ -34,7 +34,7 @@ class UIPatternDeck extends UIWindow {
       parameterKnobs[ki].addToContainer(this);
     }
     
-    Engine.Listener lxListener = new Engine.Listener() {
+    Engine.Listener lxListener = new Engine.AbstractListener() {
       public void patternWillChange(Engine.Deck deck, LXPattern pattern, LXPattern nextPattern) {
         patternList.redraw();
       }
@@ -80,28 +80,37 @@ class UIPatternDeck extends UIWindow {
       return deck.getNextPattern() == pattern;
     }
     
-    public void select() {
+    public void onMousePressed() {
       deck.goPattern(pattern);
     }
   }
 }
 
 class UICrossfader extends UIWindow {
-    
+  
+  private final UIToggleSet displayMode;
+  
   public UICrossfader(float x, float y, float w, float h) {
     super("CROSSFADER", x, y, w, h);
 
     List<ScrollItem> items = new ArrayList<ScrollItem>();
-    for (LXTransition t : transitions) {
+    for (LXTransition t : glucose.getTransitions()) {
       items.add(new TransitionScrollItem(t));
-    }    
-    new UIScrollList(1, titleHeight, w-2, 120).setItems(items).addToContainer(this);
+    }
+    final UIScrollList tList;
+    (tList = 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;
+    (displayMode = new UIToggleSet(4, 182, w-10, 20)).setOptions(new String[] { "A", "COMP", "B" }).setValue("COMP").addToContainer(this);
+    
+    lx.engine.getDeck(1).addListener(new Engine.AbstractListener() {
+      public void blendTransitionDidChange(Engine.Deck deck, LXTransition transition) {
+        tList.redraw();
       }
-    }.setOptions(new String[] { "A", "COMP", "B" }).setValue(displayMode = "COMP").addToContainer(this);
+    });
+  }
+  
+  public String getDisplayMode() {
+    return displayMode.getValue();
   }
 }
 
@@ -119,15 +128,15 @@ class TransitionScrollItem extends AbstractScrollItem {
   }
   
   public boolean isSelected() {
-    return transition == lx.engine.getDeck(1).getBlendTransition();
+    return transition == glucose.getSelectedTransition();
   }
   
   public boolean isPending() {
     return false;
   }
   
-  public void select() {
-    lx.engine.getDeck(1).setBlendTransition(transition);
+  public void onMousePressed() {
+    glucose.setSelectedTransition(transition);
   }
 }
 
@@ -192,10 +201,6 @@ class UIEffects extends UIWindow {
       return effect.isEnabled();
     }
     
-    public void select() {
-      glucose.setSelectedEffect(effect);
-    }
-    
     public void onMousePressed() {
       if (glucose.getSelectedEffect() == effect) {
         if (effect.isMomentary()) {
@@ -203,6 +208,8 @@ class UIEffects extends UIWindow {
         } else {
           effect.toggle();
         }
+      } else {
+        glucose.setSelectedEffect(effect);
       }
     }
     
@@ -249,7 +256,7 @@ class UIOutput extends UIWindow {
       return panda.isEnabled();
     }
     
-    public void select() {
+    public void onMousePressed() {
       panda.toggle();
     }
   } 
@@ -452,6 +459,18 @@ class UIDebugText extends UIContext {
   }
 }
 
+class UISpeed extends UIWindow {
+  UISpeed(float x, float y, float w, float h) {
+    super("SPEED", x, y, w, h);
+    new UIParameterSlider(4, titleHeight, w-10, 20)
+    .setParameter(new BasicParameter("SPEED", 0.5).addListener(new LXParameter.Listener() {
+      public void onParameterChanged(LXParameter parameter) {
+        lx.setSpeed(parameter.getValuef() * 2);
+      }
+    })).addToContainer(this);
+  }
+}
+
 String className(Object p, String suffix) {
   String s = p.getClass().getName();
   int li;