Some cleanups and listen to deck for transition changes
[SugarCubes.git] / _UIImplementation.pde
index 03379ce81d072740ccefc56b05c700f3cd4aa6ae..d25df48ade2c65802c5d7daebcdf7572953a8d5d 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();
     }
   }