X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_UIImplementation.pde;h=df3a7e45236379847f17b35219f84c5599e2cb3b;hb=7c7625ec088b93148f46adc19ba8f1cb4baa8321;hp=ae61d30a94870a2b2c09c0dfc6c994ccf4740f36;hpb=9692dc7b2916817381bae28bf81abc50ef6d8bfa;p=SugarCubes.git diff --git a/_UIImplementation.pde b/_UIImplementation.pde index ae61d30..df3a7e4 100644 --- a/_UIImplementation.pde +++ b/_UIImplementation.pde @@ -483,16 +483,38 @@ class UIMidi extends UIWindow { 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); } - new UIScrollList(1, titleHeight, w-2, 80).setItems(scrollItems).addToContainer(this); - (deckMode = new UIToggleSet(4, 110, 90, 20)).setOptions(new String[] { "A", "B" }).addToContainer(this); - (logMode = new UIButton(98, 110, w-103, 20)).setLabel("LOG").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() {