Add MIDI inputs to UI, with focused pattern deck to route input
[SugarCubes.git] / _UIFramework.pde
index a2946fbad9af7f7da96d6c7d9bbd66a287e3c541..aff72fe46a891d93df317c8478ab3976e6598d5d 100644 (file)
@@ -602,11 +602,28 @@ public class UIParameterSlider extends UIParameterControl {
   }
   
   private boolean editing = false;
+  private long lastClick = 0;
+  private float doubleClickMode = 0;
+  private float doubleClickX = 0;
   protected void onMousePressed(float mx, float my) {
+    long now = millis();
     float handleLeft = 4 + parameter.getValuef() * (w-8-handleWidth);
     if (mx >= handleLeft && mx < handleLeft + handleWidth) {
       editing = true;
+    } else {
+      if ((now - lastClick) < 300 && abs(mx - doubleClickX) < 3) {
+        parameter.setValue(doubleClickMode);  
+      }
+      doubleClickX = mx;
+      if (mx < w*.25) {
+        doubleClickMode = 0;
+      } else if (mx > w*.75) {
+        doubleClickMode = 1;
+      } else {
+        doubleClickMode = 0.5;
+      }
     }
+    lastClick = now;
   }
   
   protected void onMouseReleased(float mx, float my) {
@@ -655,8 +672,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);
@@ -693,7 +713,6 @@ public class UIScrollList extends UIObject {
       if (scrollOffset + index < items.size()) {
         pressedItem = items.get(scrollOffset + index);
         pressedItem.onMousePressed();
-        pressedItem.select();
         redraw();
       }
     }
@@ -732,8 +751,8 @@ public class UIScrollList extends UIObject {
   
   public void setScrollOffset(int offset) {
     scrollOffset = constrain(offset, 0, items.size() - numVisibleItems);
-    scrollYStart = (int) (scrollOffset * h / items.size());
-    scrollYHeight = (int) (numVisibleItems * h / (float) items.size());
+    scrollYStart = round(scrollOffset * h / items.size());
+    scrollYHeight = round(numVisibleItems * h / items.size());
     redraw();
   }
   
@@ -751,7 +770,6 @@ public interface ScrollItem {
   public boolean isSelected();
   public boolean isPending();
   public String getLabel();
-  public void select();
   public void onMousePressed();
   public void onMouseReleased();  
 }
@@ -783,7 +801,7 @@ public class UIIntegerBox extends UIObject {
   }
   
   protected void onDraw(PGraphics pg) {
-    pg.stroke(#999999);
+    pg.stroke(#666666);
     pg.fill(#222222);
     pg.rect(0, 0, w, h);
     pg.textAlign(CENTER, CENTER);