X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_UIImplementation.pde;h=df3a7e45236379847f17b35219f84c5599e2cb3b;hb=45acdbc0a9eeae34ce1d8beeb10d4f12448f9aed;hp=226c68a124655f5312c8d2fdcb58734e25086d96;hpb=a8d55ade10d68a95188105282c2c453816b20708;p=SugarCubes.git diff --git a/_UIImplementation.pde b/_UIImplementation.pde index 226c68a..df3a7e4 100644 --- a/_UIImplementation.pde +++ b/_UIImplementation.pde @@ -480,17 +480,45 @@ class UISpeed extends UIWindow { class UIMidi extends UIWindow { - final private UIToggleSet deckMode; + private final UIToggleSet deckMode; + private final UIButton logMode; - UIMidi(List 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 scrollItems = new ArrayList(); - for (MidiListener ml : midiListeners) { - scrollItems.add(ml); + for (SCMidiInput mc : midiEngine.getControllers()) { + scrollItems.add(mc); + } + 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); } - new UIScrollList(1, titleHeight, w-2, 80).setItems(scrollItems).addToContainer(this); - (deckMode = new UIToggleSet(4, 110, w-9, 20)).setOptions(new String[] { "A", "B" }).addToContainer(this); + + 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() {