From 9500da4c25dc631cd73a10ae8ff96007720e7bbf Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 1 Jan 2017 19:27:09 +0100 Subject: [PATCH] Removed MapperRegistry, Refractor code, Rename Device to MidiDeviceImpl --- .../assets/dialog/newProfileDialog.fxml | 2 +- .../playpad/assets/lang/ui_de.properties | 2 +- .../assets/view/option/profile/midiTab.fxml | 2 +- .../src/de/tobias/playpad/PlayPadImpl.java | 12 ++-- .../playpad/action/mapper/MidiMapper.java | 56 +++++++++---------- .../action/mapper/MidiMapperFactory.java | 11 ++-- .../action/mapper/listener/MidiHandler.java | 6 +- .../de/tobias/playpad/midi/device/PD12.java | 4 +- .../view/MapperOverviewViewController.java | 12 ++-- .../actions/CartActionViewController.java | 13 ++--- .../main/MainViewController.java | 6 +- .../mapper/MidiMapperViewController.java | 12 ++-- .../DoubleFeedbackViewController.java | 24 ++++---- .../SingleFeedbackViewController.java | 18 +++--- .../profile/MappingTabViewController.java | 13 ++--- .../option/profile/MidiTabViewController.java | 2 +- .../action/mapper/MapperFeedbackable.java | 9 ++- .../playpad/action/mapper/MapperRegistry.java | 18 ------ .../{Device.java => MidiDeviceImpl.java} | 6 +- .../src/de/tobias/playpad/midi/Midi.java | 14 ++--- ...Device.java => DefaultMidiDeviceImpl.java} | 4 +- .../playpad/midi/device/DeviceRegistry.java | 18 +++--- .../BaseMapperOverviewViewController.java | 41 ++++++++++++++ .../IMapperOverviewViewController.java | 29 ---------- .../midi/device/mk2/LaunchPadMK2.java | 4 +- .../midi/device/s/LaunchPadS.java | 4 +- 26 files changed, 163 insertions(+), 179 deletions(-) delete mode 100644 PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java rename PlayWallCore/src/de/tobias/playpad/action/mididevice/{Device.java => MidiDeviceImpl.java} (89%) rename PlayWallCore/src/de/tobias/playpad/midi/device/{DefaultDevice.java => DefaultMidiDeviceImpl.java} (85%) create mode 100644 PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java delete mode 100644 PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java diff --git a/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml b/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml index 4825083a..bdb58ade 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml @@ -32,7 +32,7 @@ </HBox> <HBox alignment="CENTER_LEFT" spacing="14.0"> <children> - <Label alignment="CENTER_RIGHT" prefWidth="100.0" text="%settings.midi.label.device" /> + <Label alignment="CENTER_RIGHT" prefWidth="100.0" text="%settings.midi.label.midiDeviceImpl" /> <ComboBox fx:id="midiDeviceComboBox" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" /> </children> </HBox> diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties index 119bd5e4..43587b86 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties @@ -54,7 +54,7 @@ settings.gen.cache.label.info=Wenn Sie als Audioausgabetyp "Java Audiostream" ge settings.mapping.label.mapping=Mapping: settings.mapping.button.edit=Bearbeiten... -settings.midi.label.device=Midi-Ger\u00E4te: +settings.midi.label.midiDeviceImpl=Midi-Ger\u00E4te: settings.layout.label.type=Layout Type: diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml index c65c10d5..8816e719 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml @@ -10,7 +10,7 @@ <children> <HBox spacing="14.0"> <children> - <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.midi.label.device"> + <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.midi.label.midiDeviceImpl"> <HBox.margin> <Insets top="4.0" /> </HBox.margin> diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java index a9f22a3e..0e787f8e 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java @@ -18,11 +18,7 @@ import java.util.Set; import de.tobias.playpad.audio.JavaFXHandlerFactory; import de.tobias.playpad.design.modern.ModernDesignFactory; -import org.dom4j.DocumentException; -import de.tobias.playpad.action.mapper.MapperRegistry; -import de.tobias.playpad.audio.JavaFXAudioHandler; -import de.tobias.playpad.design.modern.ModernGlobalDesign; import de.tobias.playpad.midi.device.DeviceRegistry; import de.tobias.playpad.midi.device.PD12; import de.tobias.playpad.pad.Pad; @@ -32,9 +28,9 @@ import de.tobias.playpad.plugin.PadListener; import de.tobias.playpad.plugin.SettingsListener; import de.tobias.playpad.plugin.WindowListener; import de.tobias.playpad.project.Project; -import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.settings.GlobalSettings; import de.tobias.playpad.view.MapperOverviewViewController; +import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController; import de.tobias.playpad.viewcontroller.IPadSettingsViewController; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.main.MainViewController; @@ -76,7 +72,7 @@ public class PlayPadImpl implements PlayPad { private Set<Module> modules; - public PlayPadImpl(GlobalSettings globalSettings) { + PlayPadImpl(GlobalSettings globalSettings) { App app = ApplicationUtils.getApplication(); module = new Module(app.getInfo().getName(), app.getInfo().getIdentifier()); @@ -252,7 +248,7 @@ public class PlayPadImpl implements PlayPad { return currentProject; } - public void startup(ResourceBundle resourceBundle) { + void startup(ResourceBundle resourceBundle) { registerComponents(resourceBundle); } @@ -286,7 +282,7 @@ public class PlayPadImpl implements PlayPad { Pad.getVolumeManager().addFilter(new PadVolume()); // Mapper - MapperRegistry.setOverviewViewController(new MapperOverviewViewController()); + BaseMapperOverviewViewController.setInstance(new MapperOverviewViewController()); } diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java index 2893dd12..8a9c9e24 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java @@ -1,7 +1,6 @@ package de.tobias.playpad.action.mapper; -import java.util.Optional; - +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import org.dom4j.Element; import de.tobias.playpad.Strings; @@ -13,7 +12,6 @@ import de.tobias.playpad.action.feedback.FeedbackMessage; import de.tobias.playpad.action.feedback.FeedbackType; import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback; import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback; -import de.tobias.playpad.action.mididevice.Device; import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.viewcontroller.mapper.MidiMapperViewController; @@ -33,11 +31,11 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac private Feedback feedback; private FeedbackType feedbackType; - public MidiMapper(String type) { + MidiMapper(String type) { this(type, 0, 0); } - public MidiMapper(String type, int command, int key) { + MidiMapper(String type, int command, int key) { this.type = type; this.command = command; this.key = key; @@ -84,10 +82,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac } @Override - public void handleFeedback(FeedbackMessage type) { - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - device.handleFeedback(type, key, feedback); + public void handleFeedback(FeedbackMessage message) { + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + midiDeviceImpl.handleFeedback(message, key, feedback); } } @@ -96,12 +94,12 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac return type; } - // Feedback, abhängig vom Device + // Feedback, depends on MidiDeviceImpl @Override public boolean supportFeedback() { - Device midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice != null) { - return midiDevice.supportFeedback(); + MidiDeviceImpl midiMidiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiMidiDeviceImpl != null) { + return midiMidiDeviceImpl.supportFeedback(); } return false; } @@ -117,10 +115,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor[] getColors() { - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - if (device instanceof DeviceColorAssociatorConnector) { - return ((DeviceColorAssociatorConnector) device).getColors(); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) { + return ((DeviceColorAssociatorConnector) midiDeviceImpl).getColors(); } } return null; @@ -128,10 +126,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor getDefaultEventColor() { - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - if (device instanceof DeviceColorAssociatorConnector) { - return ((DeviceColorAssociatorConnector) device).getDefaultEventColor(); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) { + return ((DeviceColorAssociatorConnector) midiDeviceImpl).getDefaultEventColor(); } } return null; @@ -139,10 +137,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor getDefaultStandardColor() { - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - if (device instanceof DeviceColorAssociatorConnector) { - return ((DeviceColorAssociatorConnector) device).getDefaultStandardColor(); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) { + return ((DeviceColorAssociatorConnector) midiDeviceImpl).getDefaultStandardColor(); } } return null; @@ -150,10 +148,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor map(Color color) { - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - if (device instanceof DeviceColorAssociatorConnector) { - return ((DeviceColorAssociatorConnector) device).map(color); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) { + return ((DeviceColorAssociatorConnector) midiDeviceImpl).map(color); } } return null; diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java index 27e14b3e..3d616684 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java @@ -1,9 +1,8 @@ package de.tobias.playpad.action.mapper; import de.tobias.playpad.Strings; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.midi.Midi; -import de.tobias.utils.ui.icon.FontIconType; import de.tobias.utils.util.Localization; public class MidiMapperFactory extends MapperFactory implements MapperConnectFeedbackable { @@ -24,14 +23,14 @@ public class MidiMapperFactory extends MapperFactory implements MapperConnectFee @Override public void initFeedbackType() { - Device device = Midi.getInstance().getMidiDevice(); - device.initDevice(); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + midiDeviceImpl.initDevice(); } @Override public void clearFeedbackType() { - Device device = Midi.getInstance().getMidiDevice(); - device.clearFeedback(); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + midiDeviceImpl.clearFeedback(); } // TODO Remove diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java index 85f6ec28..906c204d 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java @@ -7,7 +7,7 @@ import javax.sound.midi.MidiMessage; import de.tobias.playpad.action.Action; import de.tobias.playpad.action.InputType; import de.tobias.playpad.action.MappingUtils; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.midi.MidiListener; import de.tobias.playpad.project.Project; @@ -43,8 +43,8 @@ public class MidiHandler implements MidiListener { int key = message.getMessage()[1]; // Custom Midi Listener - Device device = midi.getMidiDevice(); - device.onMidiMessage(message); + MidiDeviceImpl midiDeviceImpl = midi.getMidiDevice(); + midiDeviceImpl.onMidiMessage(message); InputType type; if (message.getMessage()[2] != 0) { diff --git a/PlayWall/src/de/tobias/playpad/midi/device/PD12.java b/PlayWall/src/de/tobias/playpad/midi/device/PD12.java index 40c050e4..2a214f22 100644 --- a/PlayWall/src/de/tobias/playpad/midi/device/PD12.java +++ b/PlayWall/src/de/tobias/playpad/midi/device/PD12.java @@ -6,11 +6,11 @@ import javax.sound.midi.SysexMessage; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.Feedback; import de.tobias.playpad.action.feedback.FeedbackMessage; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.settings.Profile; import javafx.application.Platform; -public class PD12 extends Device { +public class PD12 extends MidiDeviceImpl { public static final String NAME = "PD 12"; diff --git a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java index 7b86020d..786e7834 100644 --- a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java +++ b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java @@ -1,9 +1,5 @@ package de.tobias.playpad.view; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.action.Action; @@ -12,7 +8,7 @@ import de.tobias.playpad.action.mapper.MapperFactory; import de.tobias.playpad.action.mapper.MapperViewController; import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.registry.Registry; -import de.tobias.playpad.viewcontroller.IMapperOverviewViewController; +import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController; import de.tobias.utils.ui.icon.FontAwesomeType; import de.tobias.utils.ui.icon.FontIcon; import javafx.scene.Parent; @@ -24,8 +20,12 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + // Diese Klasse zeigt die Mapper zu einer Action an -public class MapperOverviewViewController implements IMapperOverviewViewController { +public class MapperOverviewViewController extends BaseMapperOverviewViewController { private VBox root; private VBox mappingView; diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java index 02065612..c53586b9 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java @@ -4,9 +4,8 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.Strings; import de.tobias.playpad.action.cartaction.CartAction; import de.tobias.playpad.action.cartaction.CartAction.ControlMode; -import de.tobias.playpad.action.mapper.MapperRegistry; import de.tobias.playpad.action.mapper.MapperViewController; -import de.tobias.playpad.viewcontroller.IMapperOverviewViewController; +import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController; import de.tobias.playpad.viewcontroller.cell.EnumCell; import de.tobias.utils.ui.ContentViewController; import javafx.fxml.FXML; @@ -21,7 +20,7 @@ public class CartActionViewController extends ContentViewController { @FXML private CheckBox autoColorCheckbox; @FXML private VBox rootContainer; - private IMapperOverviewViewController mapperOverviewViewController; + private BaseMapperOverviewViewController baseMapperOverviewViewController; private CartAction action; @@ -43,8 +42,8 @@ public class CartActionViewController extends ContentViewController { { action.setAutoFeedbackColors(c); // Disable Feedback Controls bei Automatischen Feedback für VORHANDENE MAPPER - if (mapperOverviewViewController != null) { - mapperOverviewViewController.getControllers().forEach(controller -> + if (baseMapperOverviewViewController != null) { + baseMapperOverviewViewController.getControllers().forEach(controller -> { toggleFeedbackVisablity(action, controller); }); @@ -52,8 +51,8 @@ public class CartActionViewController extends ContentViewController { }); VBox.setVgrow(rootContainer, Priority.ALWAYS); - mapperOverviewViewController = MapperRegistry.getOverviewViewControllerInstance(); - mapperOverviewViewController.addMapperAddListener((mapper, controller) -> + baseMapperOverviewViewController = BaseMapperOverviewViewController.getInstance(); + baseMapperOverviewViewController.addMapperAddListener((mapper, controller) -> { // Disable Feedback Controls bei Automatischen Feedback für NEUE MAPPER die erstellt werden toggleFeedbackVisablity(action, controller); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java index 0381d8ee..a641fcf2 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java @@ -547,7 +547,7 @@ public class MainViewController extends ViewController implements IMainViewContr // MIDI if (profileSettings.isMidiActive() && profileSettings.getMidiDevice() != null) { - // Load known MIDI Device + // Load known MIDI MidiDeviceImpl Worker.runLater(() -> { loadMidiDevice(profileSettings.getMidiDevice()); @@ -688,10 +688,10 @@ public class MainViewController extends ViewController implements IMainViewContr } /** - * Init MIDI Device by using the Midi Class and show some feedback the user. + * Init MIDI MidiDeviceImpl by using the Midi Class and show some feedback the user. * * @param name - * Device Name + * MidiDeviceImpl Name * * @see Midi#lookupMidiDevice(String) */ diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java index aabd426b..4dc94293 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java @@ -10,7 +10,7 @@ import de.tobias.playpad.action.mapper.MapperViewController; import de.tobias.playpad.action.mapper.MidiMapper; import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback; import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.midi.MidiListener; import de.tobias.playpad.viewcontroller.option.feedback.DoubleFeedbackViewController; @@ -133,18 +133,18 @@ public class MidiMapperViewController extends MapperViewController implements Mi midiInputKeyLabel.setText(String.valueOf(mapper.getKey())); - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - if (device.supportFeedback()) { + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + if (midiDeviceImpl.supportFeedback()) { // remove old Elements if (feedbackController != null) { root.getChildren().remove(feedbackController.getParent()); } // add new Elements if (mapper.getFeedbackType() == FeedbackType.SINGLE) { - feedbackController = new SingleFeedbackViewController((SingleMidiFeedback) mapper.getFeedback(), device.getColors()); + feedbackController = new SingleFeedbackViewController((SingleMidiFeedback) mapper.getFeedback(), midiDeviceImpl.getColors()); } else if (mapper.getFeedbackType() == FeedbackType.DOUBLE) { - feedbackController = new DoubleFeedbackViewController((DoubleMidiFeedback) mapper.getFeedback(), device.getColors()); + feedbackController = new DoubleFeedbackViewController((DoubleMidiFeedback) mapper.getFeedback(), midiDeviceImpl.getColors()); } showFeedback(); } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java index a88ef435..04031530 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java @@ -1,7 +1,5 @@ package de.tobias.playpad.viewcontroller.option.feedback; -import java.util.Optional; - import org.controlsfx.control.PopOver; import org.controlsfx.control.PopOver.ArrowLocation; @@ -9,7 +7,7 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.FeedbackMessage; import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.view.ColorPickerView; import de.tobias.utils.ui.ContentViewController; @@ -42,14 +40,14 @@ public class DoubleFeedbackViewController extends ContentViewController { super("doubleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle()); this.feedback = feedback; - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + DisplayableFeedbackColor colorDefault = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (colorDefault != null) { colorPreviewDefault.setFill(colorDefault.getPaint()); setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton); } - DisplayableFeedbackColor colorPlay = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT)); + DisplayableFeedbackColor colorPlay = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT)); if (colorPlay != null) { colorPreviewEvent.setFill(colorPlay.getPaint()); setColorChooseButtonColor(colorPlay.getPaint(), colorChooseEventButton); @@ -74,16 +72,16 @@ public class DoubleFeedbackViewController extends ContentViewController { private void colorChooseButtonHandler(ActionEvent event) { if (colorChooser == null) { colorChooser = new PopOver(); - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + DisplayableFeedbackColor color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (event.getSource() == colorChooseDefaultButton) { - color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); + color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); } else if (event.getSource() == colorChooseEventButton) { - color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT)); + color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT)); } - ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item -> + ColorPickerView colorView = new ColorPickerView(color, midiDeviceImpl.getColors(), item -> { colorChooser.hide(); if (item instanceof DisplayableFeedbackColor) { diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java index ab0d0320..11cd760a 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java @@ -1,7 +1,6 @@ package de.tobias.playpad.viewcontroller.option.feedback; -import java.util.Optional; - +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import org.controlsfx.control.PopOver; import org.controlsfx.control.PopOver.ArrowLocation; @@ -9,7 +8,6 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.FeedbackMessage; import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback; -import de.tobias.playpad.action.mididevice.Device; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.view.ColorPickerView; import de.tobias.utils.ui.ContentViewController; @@ -38,9 +36,9 @@ public class SingleFeedbackViewController extends ContentViewController { super("singleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle()); this.feedback = feedback; - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + DisplayableFeedbackColor colorDefault = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (colorDefault != null) { colorPreviewDefault.setFill(colorDefault.getPaint()); setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton); @@ -60,11 +58,11 @@ public class SingleFeedbackViewController extends ContentViewController { private void colorChooseButtonHandler(ActionEvent event) { if (colorChooser == null) { colorChooser = new PopOver(); - Device device = Midi.getInstance().getMidiDevice(); - if (device != null) { - DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); + MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice(); + if (midiDeviceImpl != null) { + DisplayableFeedbackColor color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); - ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item -> + ColorPickerView colorView = new ColorPickerView(color, midiDeviceImpl.getColors(), item -> { colorChooser.hide(); if (item instanceof DisplayableFeedbackColor) { diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java index e177b8f6..ba73394a 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java @@ -2,7 +2,6 @@ package de.tobias.playpad.viewcontroller.option.profile; import java.util.Collection; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import de.tobias.playpad.PlayPadMain; @@ -13,12 +12,10 @@ import de.tobias.playpad.action.ActionFactory; import de.tobias.playpad.action.ActionDisplayable; import de.tobias.playpad.action.ActionType; import de.tobias.playpad.action.Mapping; -import de.tobias.playpad.action.mapper.MapperRegistry; import de.tobias.playpad.project.Project; -import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.settings.ProfileSettings; -import de.tobias.playpad.viewcontroller.IMapperOverviewViewController; +import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController; import de.tobias.playpad.viewcontroller.IMappingTabViewController; import de.tobias.playpad.viewcontroller.cell.DisplayableCell; import de.tobias.playpad.viewcontroller.cell.DisplayableTreeCell; @@ -49,7 +46,7 @@ public class MappingTabViewController extends ProfileSettingsTabViewController i @FXML private VBox detailView; - private IMapperOverviewViewController mapperOverviewViewController; + private BaseMapperOverviewViewController baseMapperOverviewViewController; private Mapping oldMapping; private Mapping mapping; @@ -136,10 +133,10 @@ public class MappingTabViewController extends ProfileSettingsTabViewController i public void showMapperFor(Action action) { try { if (action != null) { - mapperOverviewViewController = MapperRegistry.getOverviewViewControllerInstance(); - mapperOverviewViewController.showAction(action, detailView); + baseMapperOverviewViewController = BaseMapperOverviewViewController.getInstance(); + baseMapperOverviewViewController.showAction(action, detailView); } else { - detailView.getChildren().remove(mapperOverviewViewController.getParent()); + detailView.getChildren().remove(baseMapperOverviewViewController.getParent()); } } catch (Exception e) { e.printStackTrace(); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java index 72c74016..0eb17118 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java @@ -49,7 +49,7 @@ public class MidiTabViewController extends ProfileSettingsTabViewController { }); } - // Midi Device und Presets Choose + // Midi MidiDeviceImpl und Presets Choose @FXML private void deviceHandler(ActionEvent event) { ProfileSettings profilSettings = Profile.currentProfile().getProfileSettings(); diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java index 9e3a607a..ae78ea90 100644 --- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java +++ b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java @@ -2,10 +2,15 @@ package de.tobias.playpad.action.mapper; import de.tobias.playpad.action.feedback.FeedbackMessage; +/** + * Implement this interface to enable a mapper to receive feedback from an action + * + * @author tobias + */ public interface MapperFeedbackable { - public abstract boolean supportFeedback(); + boolean supportFeedback(); - public abstract void handleFeedback(FeedbackMessage type); + void handleFeedback(FeedbackMessage message); } \ No newline at end of file diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java deleted file mode 100644 index ea795f46..00000000 --- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.tobias.playpad.action.mapper; - -import de.tobias.playpad.viewcontroller.IMapperOverviewViewController; - -@Deprecated -public class MapperRegistry { - - // TODO New Implementation - private static IMapperOverviewViewController controllerInstance; - - public static void setOverviewViewController(IMapperOverviewViewController controller) { - MapperRegistry.controllerInstance = controller; - } - - public static IMapperOverviewViewController getOverviewViewControllerInstance() { - return controllerInstance; - } -} diff --git a/PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java b/PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java similarity index 89% rename from PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java rename to PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java index 8a55c904..19163d64 100644 --- a/PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java +++ b/PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java @@ -20,9 +20,9 @@ import de.tobias.playpad.midi.device.DeviceRegistry; * * @since 5.0.0 */ -public abstract class Device extends EventDispatcher implements Listener { +public abstract class MidiDeviceImpl extends EventDispatcher implements Listener { - public Device() { + public MidiDeviceImpl() { registerEventListener(this); } @@ -50,7 +50,7 @@ public abstract class Device extends EventDispatcher implements Listener { if (listeners != null) { for (ListenerHandler handler : listeners) { handler.execute(event); - System.out.println("Dispatched Device Event: " + event); + System.out.println("Dispatched MidiDeviceImpl Event: " + event); } } DeviceRegistry.getFactoryInstance().dispatchEvent(event); diff --git a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java index 2b81812a..470a7d1f 100644 --- a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java +++ b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java @@ -1,6 +1,6 @@ package de.tobias.playpad.midi; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.midi.device.DeviceRegistry; import javax.sound.midi.*; @@ -10,7 +10,7 @@ public class Midi implements AutoCloseable { private MidiDevice inputDevice; private MidiDevice outputDevice; - private Device midiDeviceImpl; + private MidiDeviceImpl midiMidiDeviceImplImpl; private MidiListener listener; @@ -46,8 +46,8 @@ public class Midi implements AutoCloseable { return outputDevice; } - public Device getMidiDevice() { - return midiDeviceImpl; + public MidiDeviceImpl getMidiDevice() { + return midiMidiDeviceImplImpl; } public void lookupMidiDevice(String name) throws IllegalArgumentException, MidiUnavailableException, NullPointerException { @@ -91,7 +91,7 @@ public class Midi implements AutoCloseable { // Hier wird die DeviceImpl aufgerufen try { - this.midiDeviceImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName()); + this.midiMidiDeviceImplImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName()); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } @@ -159,8 +159,8 @@ public class Midi implements AutoCloseable { } public void sendClearCommand() throws InvalidMidiDataException, MidiUnavailableException { - if (midiDeviceImpl != null) { - midiDeviceImpl.clearFeedback(); + if (midiMidiDeviceImplImpl != null) { + midiMidiDeviceImplImpl.clearFeedback(); } } } diff --git a/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java b/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java similarity index 85% rename from PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java rename to PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java index af8a3460..dd0fdbb5 100644 --- a/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java +++ b/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java @@ -3,9 +3,9 @@ package de.tobias.playpad.midi.device; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.Feedback; import de.tobias.playpad.action.feedback.FeedbackMessage; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; -public class DefaultDevice extends Device { +public class DefaultMidiDeviceImpl extends MidiDeviceImpl { @Override public String getName() { diff --git a/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java b/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java index 67b9b8a7..32c023b3 100644 --- a/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java +++ b/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java @@ -3,7 +3,7 @@ package de.tobias.playpad.midi.device; import java.util.HashMap; import java.util.List; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.event.Event; import de.tobias.playpad.event.EventDispatcher; @@ -25,7 +25,7 @@ public class DeviceRegistry extends EventDispatcher { /** * Speicher für alle Geräte Implementierungen [Produktname, Implementierung] */ - private HashMap<String, Class<? extends Device>> devices = new HashMap<>(); + private HashMap<String, Class<? extends MidiDeviceImpl>> devices = new HashMap<>(); /** * Registriert eine neue Implementierung für ein Midi Gerät @@ -35,9 +35,9 @@ public class DeviceRegistry extends EventDispatcher { * @param device * Implementierung als Klasse, Instanz erstellt das Programm bei bei bedarf */ - public void registerDevice(String id, Class<? extends Device> device) { + public void registerDevice(String id, Class<? extends MidiDeviceImpl> device) { devices.put(id, device); - System.out.println("Register MIDI Device Impl: " + id); + System.out.println("Register MIDI MidiDeviceImpl Impl: " + id); } /** @@ -45,26 +45,26 @@ public class DeviceRegistry extends EventDispatcher { * * @param id * Name des Geräts - * @return Implementierung, DefaultDevice wenn keine vorhanden oder registriert über register + * @return Implementierung, DefaultMidiDeviceImpl wenn keine vorhanden oder registriert über register * @throws InstantiationException * Fehler beim instanzieren * @throws IllegalAccessException * Fehler beim instanzieren * @see DeviceRegistry#registerDevice(String, Class) - * @see DefaultDevice + * @see DefaultMidiDeviceImpl */ - public Device getDevice(String id) throws InstantiationException, IllegalAccessException { + public MidiDeviceImpl getDevice(String id) throws InstantiationException, IllegalAccessException { if (devices.containsKey(id)) { System.out.println("Recognize known MIDI device: " + id); return devices.get(id).newInstance(); } else { System.out.println("Use Default MIDI device"); - return new DefaultDevice(); + return new DefaultMidiDeviceImpl(); } } /** - * Instanz der Device Component + * Instanz der MidiDeviceImpl Component * * @return instance */ diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java new file mode 100644 index 00000000..189bbad0 --- /dev/null +++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java @@ -0,0 +1,41 @@ +package de.tobias.playpad.viewcontroller; + +import java.util.List; +import java.util.ResourceBundle; + +import de.tobias.playpad.action.Action; +import de.tobias.playpad.action.mapper.Mapper; +import de.tobias.playpad.action.mapper.MapperViewController; +import de.tobias.utils.ui.ContentViewController; +import javafx.scene.Parent; +import javafx.scene.control.ScrollPane; +import javafx.scene.layout.Pane; + +public abstract class BaseMapperOverviewViewController { + + private static BaseMapperOverviewViewController instance; + + public static BaseMapperOverviewViewController getInstance() { + return instance; + } + + public static void setInstance(BaseMapperOverviewViewController instance) { + BaseMapperOverviewViewController.instance = instance; + } + + public interface MapperAddListener { + + void onAdd(Mapper mapper, MapperViewController controller); + } + + public abstract List<MapperViewController> getControllers(); + + public abstract void addMapperAddListener(MapperAddListener addListener); + + public abstract void showAction(Action action, Pane parent); + + public abstract void showAction(Action action, ScrollPane parent); + + public abstract Parent getParent(); + +} \ No newline at end of file diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java deleted file mode 100644 index b548e8ab..00000000 --- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.tobias.playpad.viewcontroller; - -import java.util.List; - -import de.tobias.playpad.action.Action; -import de.tobias.playpad.action.mapper.Mapper; -import de.tobias.playpad.action.mapper.MapperViewController; -import javafx.scene.Parent; -import javafx.scene.control.ScrollPane; -import javafx.scene.layout.Pane; - -public interface IMapperOverviewViewController { - - public static interface MapperAddListener { - - public void onAdd(Mapper mapper, MapperViewController controller); - } - - public List<MapperViewController> getControllers(); - - public void addMapperAddListener(MapperAddListener addListener); - - public void showAction(Action action, Pane parent); - - public void showAction(Action action, ScrollPane parent); - - public Parent getParent(); - -} \ No newline at end of file diff --git a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java index 389b2ab7..7d8f920e 100644 --- a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java +++ b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java @@ -10,13 +10,13 @@ import javax.sound.midi.ShortMessage; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.Feedback; import de.tobias.playpad.action.feedback.FeedbackMessage; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector; import de.tobias.playpad.launchpadplugin.impl.MapParser; import de.tobias.playpad.midi.Midi; import javafx.scene.paint.Color; -public class LaunchPadMK2 extends Device implements DeviceColorAssociatorConnector { +public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociatorConnector { public static final String NAME = "Launchpad MK2"; diff --git a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java index 693d49e0..fa6ced16 100644 --- a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java +++ b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java @@ -6,12 +6,12 @@ import javax.sound.midi.MidiUnavailableException; import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; import de.tobias.playpad.action.feedback.Feedback; import de.tobias.playpad.action.feedback.FeedbackMessage; -import de.tobias.playpad.action.mididevice.Device; +import de.tobias.playpad.action.mididevice.MidiDeviceImpl; import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector; import de.tobias.playpad.midi.Midi; import javafx.scene.paint.Color; -public class LaunchPadS extends Device implements DeviceColorAssociatorConnector { +public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorConnector { public static final String NAME = "Launchpad S"; -- GitLab