Apat and added acos to spherycolor, not included in color yet but working
[SugarCubes.git] / _UIImplementation.pde
index e72d76b598976e164a04c78a0e9cb1fe7bd48627..0ea8073ddb57d6701a6a0a1b55df6fc88c89bbe8 100644 (file)
@@ -13,9 +13,9 @@
  
 class UIPatternDeck extends UIWindow {
     
-  Engine.Deck deck;
+  LXDeck deck;
   
-  public UIPatternDeck(Engine.Deck deck, String label, float x, float y, float w, float h) {
+  public UIPatternDeck(LXDeck deck, String label, float x, float y, float w, float h) {
     super(label, x, y, w, h);
     this.deck = deck;
     int yp = titleHeight;
@@ -34,11 +34,11 @@ class UIPatternDeck extends UIWindow {
       parameterKnobs[ki].addToContainer(this);
     }
     
-    Engine.Listener lxListener = new Engine.AbstractListener() {
-      public void patternWillChange(Engine.Deck deck, LXPattern pattern, LXPattern nextPattern) {
+    LXDeck.Listener lxListener = new LXDeck.AbstractListener() {
+      public void patternWillChange(LXDeck deck, LXPattern pattern, LXPattern nextPattern) {
         patternList.redraw();
       }
-      public void patternDidChange(Engine.Deck deck, LXPattern pattern) {
+      public void patternDidChange(LXDeck deck, LXPattern pattern) {
         patternList.redraw();
         int pi = 0;
         for (LXParameter parameter : pattern.getParameters()) {
@@ -96,8 +96,8 @@ class UIBlendMode extends UIWindow {
     final UIScrollList tList;
     (tList = new UIScrollList(1, titleHeight, w-2, 60)).setItems(items).addToContainer(this);
 
-    lx.engine.getDeck(1).addListener(new Engine.AbstractListener() {
-      public void blendTransitionDidChange(Engine.Deck deck, LXTransition transition) {
+    lx.engine.getDeck(GLucose.RIGHT_DECK).addListener(new LXDeck.AbstractListener() {
+      public void faderTransitionDidChange(LXDeck deck, LXTransition transition) {
         tList.redraw();
       }
     });
@@ -138,10 +138,15 @@ class UICrossfader extends UIWindow {
   public UICrossfader(float x, float y, float w, float h) {
     super("CROSSFADER", x, y, w, h);
 
-    new UIParameterSlider(4, titleHeight, w-9, 32).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this);
+    new UIParameterSlider(4, titleHeight, w-9, 32).setParameter(lx.engine.getDeck(GLucose.RIGHT_DECK).getFader()).addToContainer(this);
     (displayMode = new UIToggleSet(4, titleHeight + 36, w-9, 20)).setOptions(new String[] { "A", "COMP", "B" }).setValue("COMP").addToContainer(this);
   }
   
+  public UICrossfader setDisplayMode(String value) {
+    displayMode.setValue(value);
+    return this;
+  }
+  
   public String getDisplayMode() {
     return displayMode.getValue();
   }
@@ -467,10 +472,14 @@ class UIDebugText extends UIContext {
 }
 
 class UISpeed extends UIWindow {
+  
+  final BasicParameter speed;
+  
   UISpeed(float x, float y, float w, float h) {
     super("SPEED", x, y, w, h);
+    speed = new BasicParameter("SPEED", 0.5);
     new UIParameterSlider(4, titleHeight, w-10, 20)
-    .setParameter(new BasicParameter("SPEED", 0.5).addListener(new LXParameter.Listener() {
+    .setParameter(speed.addListener(new LXParameterListener() {
       public void onParameterChanged(LXParameter parameter) {
         lx.setSpeed(parameter.getValuef() * 2);
       }
@@ -483,24 +492,46 @@ class UIMidi extends UIWindow {
   private final UIToggleSet deckMode;
   private final UIButton logMode;
   
-  UIMidi(List<MidiListener> midiListeners, float x, float y, float w, float h) {
+  UIMidi(final MidiEngine midiEngine, float x, float y, float w, float h) {
     super("MIDI", x, y, w, h);
+
     // Processing compiler doesn't seem to get that list of class objects also conform to interface
     List<ScrollItem> scrollItems = new ArrayList<ScrollItem>();
-    for (MidiListener ml : midiListeners) {
-      scrollItems.add(ml);
+    for (SCMidiInput mc : midiEngine.getControllers()) {
+      scrollItems.add(mc);
     }
-    new UIScrollList(1, titleHeight, w-2, 100).setItems(scrollItems).addToContainer(this);
-    (deckMode = new UIToggleSet(4, 130, 90, 20)).setOptions(new String[] { "A", "B" }).addToContainer(this);
+    final UIScrollList scrollList;
+    (scrollList = new UIScrollList(1, titleHeight, w-2, 100)).setItems(scrollItems).addToContainer(this);
+    (deckMode = new UIToggleSet(4, 130, 90, 20) {
+      protected void onToggle(String value) {
+        midiEngine.setFocusedDeck(value == "A" ? 0 : 1);
+      }
+    }).setOptions(new String[] { "A", "B" }).addToContainer(this);
     (logMode = new UIButton(98, 130, w-103, 20)).setLabel("LOG").addToContainer(this);
+    
+    SCMidiInputListener listener = new SCMidiInputListener() {
+      public void onEnabled(SCMidiInput controller, boolean enabled) {
+        scrollList.redraw();
+      }
+    };
+    for (SCMidiInput mc : midiEngine.getControllers()) {
+      mc.addListener(listener);
+    }
+    
+    midiEngine.addListener(new MidiEngineListener() {
+      public void onFocusedDeck(int deckIndex) {
+        deckMode.setValue(deckIndex == 0 ? "A" : "B");
+      }
+    });
+
   }
   
   public boolean logMidi() {
     return logMode.isActive();
   }
   
-  public Engine.Deck getFocusedDeck() {
-    return lx.engine.getDeck(deckMode.getValue() == "A" ? 0 : 1);
+  public LXDeck getFocusedDeck() {
+    return lx.engine.getDeck(deckMode.getValue() == "A" ? GLucose.LEFT_DECK : GLucose.RIGHT_DECK);
   }
 }