+class UIMidi extends UIWindow {
+
+ private final UIToggleSet deckMode;
+ private final UIButton logMode;
+
+ 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 (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);
+ }
+
+ midiEngine.addListener(new MidiEngineListener() {
+ public void onFocusedDeck(int deckIndex) {
+ deckMode.setValue(deckIndex == 0 ? "A" : "B");
+ }
+ });
+
+ }
+
+ public boolean logMidi() {
+ return logMode.isActive();
+ }
+
+ public LXDeck getFocusedDeck() {
+ return lx.engine.getDeck(deckMode.getValue() == "A" ? GLucose.LEFT_DECK : GLucose.RIGHT_DECK);
+ }
+}
+