From e5ca3324a242c5055d8be2015b1e4fe3700d931f Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Tue, 13 Sep 2016 09:20:33 +0200 Subject: [PATCH] Start on color mode --- .../playpad/action/mapper/MidiMapper.java | 4 +- .../design/modern/ModernCartDesign.java | 17 ++-- .../design/modern/ModernGlobalDesign.java | 13 ++- .../desktop/DesktopColorPickerView.java | 42 +++++++++ .../desktop/DesktopMainLayoutConnect.java | 13 ++- .../DesktopMenuToolbarViewController.java | 69 ++++++++++---- .../{ => pad}/DesktopPadDragListener.java | 4 +- .../desktop/{ => pad}/DesktopPadView.java | 3 +- .../{ => pad}/DesktopPadViewController.java | 39 ++++---- .../{ColorView.java => ColorPickerView.java} | 16 +++- .../ModernCartDesignViewController.java | 4 +- .../ModernGlobalDesignViewController.java | 4 +- .../main/MainViewController.java | 2 +- .../DoubleFeedbackViewController.java | 4 +- .../SingleFeedbackViewController.java | 4 +- .../action/feedback/ColorAdjustable.java | 21 ++++- .../action/feedback/ColorAdjuster.java | 8 +- .../action/feedback/ColorAssociator.java | 38 +++++++- .../playpad/design/DesignColorAssociator.java | 17 ++++ .../playpad/design/IColorPickerView.java | 18 ++++ .../NativeAudio$NativeAudioDelegate.class | Bin 0 -> 322 bytes .../bin/de/tobias/playpad/NativeAudio.class | Bin 0 -> 1321 bytes .../playpad/NativeAudioMacHandler.class | Bin 0 -> 5572 bytes .../NativeAudioMacHandlerConnect.class | Bin 0 -> 3366 bytes .../de/tobias/playpad/NativeAudioTest.class | Bin 0 -> 1146 bytes .../bin/de_tobias_playpad_NativeAudio.h | 85 ++++++++++++++++++ 26 files changed, 357 insertions(+), 68 deletions(-) create mode 100644 PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java rename PlayWall/src/de/tobias/playpad/layout/desktop/{ => pad}/DesktopPadDragListener.java (97%) rename PlayWall/src/de/tobias/playpad/layout/desktop/{ => pad}/DesktopPadView.java (99%) rename PlayWall/src/de/tobias/playpad/layout/desktop/{ => pad}/DesktopPadViewController.java (94%) rename PlayWall/src/de/tobias/playpad/view/{ColorView.java => ColorPickerView.java} (65%) create mode 100644 PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java create mode 100644 PlayWallNative/bin/de/tobias/playpad/NativeAudio$NativeAudioDelegate.class create mode 100644 PlayWallNative/bin/de/tobias/playpad/NativeAudio.class create mode 100644 PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandler.class create mode 100644 PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandlerConnect.class create mode 100644 PlayWallNative/bin/de/tobias/playpad/NativeAudioTest.class create mode 100644 PlayWallNative/bin/de_tobias_playpad_NativeAudio.h diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java index f6f60e39..f4073ed5 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java @@ -104,9 +104,9 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac } @Override - public void setColor(FeedbackMessage feedbackMessage, int value) { + public void setColor(FeedbackMessage feedbackMessage, DisplayableFeedbackColor color) { if (feedbackMessage == FeedbackMessage.STANDARD || feedbackMessage == FeedbackMessage.EVENT) { - feedback.setFeedback(feedbackMessage, value); + feedback.setFeedback(feedbackMessage, color.mapperFeedbackValue()); } else { throw new IllegalArgumentException("Unexpected Message Type."); } diff --git a/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java b/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java index 86fde080..1e7a2880 100644 --- a/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java +++ b/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java @@ -166,6 +166,15 @@ public class ModernCartDesign extends Design implements CartDesign, DesignColorA endStyleClass(builder); } + @Override + public void copyGlobalLayout(GlobalDesign globalLayout) { + if (globalLayout instanceof ModernGlobalDesign) { + ModernGlobalDesign modernLayoutGlobal = (ModernGlobalDesign) globalLayout; + backgroundColor = modernLayoutGlobal.getBackgroundColor(); + playColor = modernLayoutGlobal.getPlayColor(); + } + } + // Color Associator @Override public Color getAssociatedEventColor() { @@ -177,12 +186,4 @@ public class ModernCartDesign extends Design implements CartDesign, DesignColorA return Color.web(backgroundColor.getColorHi()); } - @Override - public void copyGlobalLayout(GlobalDesign globalLayout) { - if (globalLayout instanceof ModernGlobalDesign) { - ModernGlobalDesign modernLayoutGlobal = (ModernGlobalDesign) globalLayout; - backgroundColor = modernLayoutGlobal.getBackgroundColor(); - playColor = modernLayoutGlobal.getPlayColor(); - } - } } diff --git a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java index 08f9fa17..7d2b6c00 100644 --- a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java +++ b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java @@ -3,15 +3,18 @@ package de.tobias.playpad.design.modern; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.function.Consumer; import org.dom4j.Element; +import de.tobias.playpad.DisplayableColor; import de.tobias.playpad.PseudoClasses; import de.tobias.playpad.design.CartDesign; import de.tobias.playpad.design.Design; import de.tobias.playpad.design.DesignColorAssociator; import de.tobias.playpad.design.FadeableColor; import de.tobias.playpad.design.GlobalDesign; +import de.tobias.playpad.design.IColorPickerView; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadSettings; import de.tobias.playpad.pad.conntent.play.Durationable; @@ -19,14 +22,16 @@ import de.tobias.playpad.pad.viewcontroller.IPadViewController; import de.tobias.playpad.project.Project; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.settings.Warning; +import de.tobias.playpad.view.ColorPickerView; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.utils.application.ApplicationUtils; import de.tobias.utils.application.container.PathType; +import javafx.scene.Node; import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.util.Duration; -public class ModernGlobalDesign extends Design implements GlobalDesign, DesignColorAssociator { +public class ModernGlobalDesign extends Design implements GlobalDesign, DesignColorAssociator, IColorPickerView { public static final String TYPE = "modern"; @@ -313,4 +318,10 @@ public class ModernGlobalDesign extends Design implements GlobalDesign, DesignCo public Color getAssociatedStandardColor() { return Color.web(backgroundColor.getColorHi()); } + + // Color View + @Override + public Node getColorInterface(Consumer<DisplayableColor> onSelection) { + return new ColorPickerView(null, ModernColor.values(), onSelection); + } } diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java new file mode 100644 index 00000000..aa00ed73 --- /dev/null +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java @@ -0,0 +1,42 @@ +package de.tobias.playpad.layout.desktop; + +import java.util.function.Consumer; + +import de.tobias.playpad.DisplayableColor; +import de.tobias.playpad.design.IColorPickerView; +import de.tobias.playpad.settings.Profile; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class DesktopColorPickerView implements Consumer<DisplayableColor> { + + private Stage stage; + + public DesktopColorPickerView(IColorPickerView baseView) { + Node node = baseView.getColorInterface(this); + VBox root = new VBox(node); + + stage = new Stage(); + stage.setScene(new Scene(root)); + + // Init Stage + Profile.currentProfile().currentLayout().applyCss(stage); + stage.setResizable(false); + } + + public void show() { + stage.show(); + } + + public void hide() { + stage.close(); + } + + // Handle Selected Color from View. + @Override + public void accept(DisplayableColor t) { + + } +} diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java index 0d1c754d..30c0241a 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java @@ -3,11 +3,14 @@ package de.tobias.playpad.layout.desktop; import java.util.Stack; import de.tobias.playpad.Strings; +import de.tobias.playpad.layout.desktop.pad.DesktopPadView; import de.tobias.playpad.pad.view.IPadView; import de.tobias.playpad.view.main.MainLayoutConnect; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController; import de.tobias.utils.util.Localization; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; /** * Desktop Implmentierung des Main Layouts. @@ -21,7 +24,7 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect { private static final String TYPE = "Desktop"; private DesktopMenuToolbarViewController desktopMenuToolbarViewController; - private DesktopEditMode editMode = DesktopEditMode.PLAY; + private ObjectProperty<DesktopEditMode> editMode = new SimpleObjectProperty<>(DesktopEditMode.PLAY); private Stack<IPadView> recyclingStack; @@ -66,10 +69,14 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect { } public DesktopEditMode getEditMode() { - return editMode; + return editMode.get(); } public void setEditMode(DesktopEditMode editMode) { - this.editMode = editMode; + this.editMode.set(editMode); + } + + public ObjectProperty<DesktopEditMode> editModeProperty() { + return editMode; } } diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index 34ee58d9..1ada3988 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -15,6 +15,8 @@ import de.tobias.playpad.AppUserInfoStrings; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.Strings; +import de.tobias.playpad.design.GlobalDesign; +import de.tobias.playpad.design.IColorPickerView; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; @@ -56,6 +58,8 @@ import de.tobias.utils.util.Worker; import de.tobias.utils.util.net.FileUpload; import javafx.application.Platform; import javafx.beans.binding.Bindings; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; @@ -77,7 +81,8 @@ import javafx.scene.layout.HBox; import javafx.stage.Modality; import javafx.stage.Stage; -public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewController implements EventHandler<ActionEvent> { +public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewController + implements EventHandler<ActionEvent>, ChangeListener<DesktopEditMode> { // meuBar @FXML protected MenuBar menuBar; @@ -107,11 +112,17 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro @FXML protected Label liveLabel; + protected SegmentedButton editButtons; + protected ToggleButton playButton; + protected ToggleButton dragButton; + protected ToggleButton colorButton; + private IMainViewController mainViewController; private transient ProjectSettingsViewController projectSettingsViewController; private transient ProfileSettingsViewController profileSettingsViewController; private transient GlobalSettingsViewController globalSettingsViewController; + private transient DesktopColorPickerView colorPickerView; private DesktopMainLayoutConnect connect; @@ -119,6 +130,10 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro super("header", "de/tobias/playpad/assets/view/main/desktop/", PlayPadMain.getUiResourceBundle()); this.mainViewController = controller; this.connect = connect; + this.connect.editModeProperty().addListener(this); + + // Ist Zustand herstellen, indem Listener mit dem Initialen Wert bekannt gemacht wird. + changed(connect.editModeProperty(), null, connect.getEditMode()); initLayoutMenu(); } @@ -137,30 +152,20 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro helpMenu.getItems().add(new HelpMenuItem(helpMenu)); // Edit Mode Buttons - SegmentedButton editButtons = new SegmentedButton(); - ToggleButton playButton = new ToggleButton("", new FontIcon(FontAwesomeType.HAND_ALT_LEFT)); + editButtons = new SegmentedButton(); + playButton = new ToggleButton("", new FontIcon(FontAwesomeType.PLAY)); playButton.setFocusTraversable(false); - ToggleButton dragButton = new ToggleButton("", new FontIcon(FontAwesomeType.ARROWS)); + dragButton = new ToggleButton("", new FontIcon(FontAwesomeType.ARROWS)); dragButton.setFocusTraversable(false); - ToggleButton colorButton = new ToggleButton("", new FontIcon(FontAwesomeType.PENCIL)); + colorButton = new ToggleButton("", new FontIcon(FontAwesomeType.PENCIL)); colorButton.setFocusTraversable(false); editButtons.getButtons().addAll(playButton, dragButton, colorButton); editButtons.getToggleGroup().selectedToggleProperty().addListener((a, b, c) -> { - if (b == dragButton) { - for (IPadView view : mainViewController.getPadViews()) { - view.enableDragAndDropDesignMode(false); - } - } - if (c == playButton) { connect.setEditMode(DesktopEditMode.PLAY); } else if (c == dragButton) { connect.setEditMode(DesktopEditMode.DRAG); - System.out.println("Drag"); - for (IPadView view : mainViewController.getPadViews()) { - view.enableDragAndDropDesignMode(true); - } } else if (c == colorButton) { connect.setEditMode(DesktopEditMode.COLOR); } @@ -168,6 +173,40 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro iconHbox.getChildren().add(editButtons); } + // Desktop Edit Mode Change Listener --> Update Button + @Override + public void changed(ObservableValue<? extends DesktopEditMode> observable, DesktopEditMode oldValue, DesktopEditMode newValue) { + // handle old mode + if (oldValue == DesktopEditMode.DRAG) { + for (IPadView view : mainViewController.getPadViews()) { + view.enableDragAndDropDesignMode(false); + } + } else if (oldValue == DesktopEditMode.COLOR) { + if (colorPickerView != null) { + colorPickerView.hide(); + colorPickerView = null; + } + } + + // handle new mode + if (newValue == DesktopEditMode.PLAY) { + playButton.setSelected(true); + } else if (newValue == DesktopEditMode.DRAG) { + dragButton.setSelected(true); + for (IPadView view : mainViewController.getPadViews()) { + view.enableDragAndDropDesignMode(true); + } + } else if (newValue == DesktopEditMode.COLOR) { + colorButton.setSelected(true); + + GlobalDesign design = Profile.currentProfile().currentLayout(); + if (design instanceof IColorPickerView) { + colorPickerView = new DesktopColorPickerView((IColorPickerView) design); + colorPickerView.show(); + } + } + } + private void initLayoutMenu() { ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings(); Registry<MainLayoutConnect> mainLayouts = PlayPadPlugin.getRegistryCollection().getMainLayouts(); diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java similarity index 97% rename from PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java rename to PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java index de4d05aa..d7d6eb92 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java @@ -1,4 +1,4 @@ -package de.tobias.playpad.layout.desktop; +package de.tobias.playpad.layout.desktop.pad; import java.io.File; import java.io.IOException; @@ -6,6 +6,8 @@ import java.util.Collection; import java.util.Set; import de.tobias.playpad.PlayPadPlugin; +import de.tobias.playpad.layout.desktop.DesktopEditMode; +import de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadContentRegistry; import de.tobias.playpad.pad.conntent.PadContent; diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java similarity index 99% rename from PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java rename to PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java index 70203abd..7902868b 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java @@ -1,7 +1,8 @@ -package de.tobias.playpad.layout.desktop; +package de.tobias.playpad.layout.desktop.pad; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.PseudoClasses; +import de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadContentRegistry; import de.tobias.playpad.pad.conntent.PadContent; diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java similarity index 94% rename from PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java rename to PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index f22e6f26..ff3de94a 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -1,4 +1,4 @@ -package de.tobias.playpad.layout.desktop; +package de.tobias.playpad.layout.desktop.pad; import java.io.File; import java.io.IOException; @@ -7,6 +7,8 @@ import java.util.Set; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.Strings; +import de.tobias.playpad.layout.desktop.DesktopEditMode; +import de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadContentRegistry; import de.tobias.playpad.pad.PadStatus; @@ -43,7 +45,6 @@ import javafx.util.Duration; public class DesktopPadViewController implements IPadViewController, EventHandler<ActionEvent> { - protected static final String CURRENT_PAGE_BUTTON = "current-page-button"; private static final String OPEN_FOLDER = "openFolder"; private static final String DURATION_FORMAT = "%d:%02d"; @@ -59,7 +60,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle private DesktopPadDragListener padDragListener; private DesktopMainLayoutConnect connect; - + public DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutConnect connect) { this.padView = padView; this.connect = connect; @@ -159,21 +160,23 @@ public class DesktopPadViewController implements IPadViewController, EventHandle @Override public void handle(ActionEvent event) { - if (event.getSource() == padView.getPlayButton()) { - onPlay(); - } else if (event.getSource() == padView.getPauseButton()) { - onPause(); - } else if (event.getSource() == padView.getStopButton()) { - onStop(); - } else if (event.getSource() == padView.getNewButton()) { - try { - onNew(event); - } catch (NoSuchComponentException e) { - // TODO Error Handling - e.printStackTrace(); + if (connect.getEditMode() == DesktopEditMode.PLAY) { + if (event.getSource() == padView.getPlayButton()) { + onPlay(); + } else if (event.getSource() == padView.getPauseButton()) { + onPause(); + } else if (event.getSource() == padView.getStopButton()) { + onStop(); + } else if (event.getSource() == padView.getNewButton()) { + try { + onNew(event); + } catch (NoSuchComponentException e) { + // TODO Error Handling + e.printStackTrace(); + } + } else if (event.getSource() == padView.getSettingsButton()) { + onSettings(); } - } else if (event.getSource() == padView.getSettingsButton()) { - onSettings(); } } @@ -271,7 +274,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle } Stage owner = mvc.getStage(); - + PadSettingsViewController padSettingsViewController = new PadSettingsViewController(pad, owner); padSettingsViewController.getStage().setOnHiding(ev -> { diff --git a/PlayWall/src/de/tobias/playpad/view/ColorView.java b/PlayWall/src/de/tobias/playpad/view/ColorPickerView.java similarity index 65% rename from PlayWall/src/de/tobias/playpad/view/ColorView.java rename to PlayWall/src/de/tobias/playpad/view/ColorPickerView.java index ff09b680..06718f47 100644 --- a/PlayWall/src/de/tobias/playpad/view/ColorView.java +++ b/PlayWall/src/de/tobias/playpad/view/ColorPickerView.java @@ -7,9 +7,11 @@ import javafx.geometry.Insets; import javafx.scene.layout.GridPane; import javafx.scene.shape.Rectangle; -public class ColorView extends GridPane { +public class ColorPickerView extends GridPane { - public ColorView(DisplayableColor startColor, DisplayableColor[] colors, Consumer<DisplayableColor> finish) { + private Rectangle currentSelected; + + public ColorPickerView(DisplayableColor startColor, DisplayableColor[] colors, Consumer<DisplayableColor> finish) { double size = Math.sqrt(colors.length); int iSize = (int) size; if (size != iSize) { @@ -39,7 +41,15 @@ public class ColorView extends GridPane { } // EventHandler - rectangle.setOnMouseReleased(event -> finish.accept(color)); + rectangle.setOnMouseReleased(event -> + { + if (currentSelected != null) { + currentSelected.getStrokeDashArray().clear(); + } + rectangle.getStrokeDashArray().addAll(3.0); + currentSelected = rectangle; + finish.accept(color); + }); add(rectangle, x, y); } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernCartDesignViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernCartDesignViewController.java index fbda591a..99644a91 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernCartDesignViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernCartDesignViewController.java @@ -10,7 +10,7 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.design.CartDesign; import de.tobias.playpad.design.modern.ModernCartDesign; import de.tobias.playpad.design.modern.ModernColor; -import de.tobias.playpad.view.ColorView; +import de.tobias.playpad.view.ColorPickerView; import de.tobias.playpad.viewcontroller.CartDesignViewController; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -65,7 +65,7 @@ public class ModernCartDesignViewController extends CartDesignViewController { } private void colorChooser(Button anchorNode, ModernColor startColor, Consumer<ModernColor> onFinish) { - ColorView view = new ColorView(startColor, ModernColor.values(), (DisplayableColor t) -> + ColorPickerView view = new ColorPickerView(startColor, ModernColor.values(), (DisplayableColor t) -> { colorChooser.hide(); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernGlobalDesignViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernGlobalDesignViewController.java index 19811e5c..d90331f5 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernGlobalDesignViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ModernGlobalDesignViewController.java @@ -10,7 +10,7 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.design.GlobalDesign; import de.tobias.playpad.design.modern.ModernColor; import de.tobias.playpad.design.modern.ModernGlobalDesign; -import de.tobias.playpad.view.ColorView; +import de.tobias.playpad.view.ColorPickerView; import de.tobias.playpad.viewcontroller.GlobalDesignViewController; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -94,7 +94,7 @@ public class ModernGlobalDesignViewController extends GlobalDesignViewController } private void colorChooser(Button anchorNode, ModernColor startColor, Consumer<ModernColor> onFinish) { - ColorView view = new ColorView(startColor, ModernColor.values(), (DisplayableColor t) -> + ColorPickerView view = new ColorPickerView(startColor, ModernColor.values(), (DisplayableColor t) -> { colorChooser.hide(); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java index ccbc3fe9..e7e59ff4 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java @@ -15,7 +15,7 @@ import de.tobias.playpad.action.mapper.listener.KeyboardHandler; import de.tobias.playpad.action.mapper.listener.MidiHandler; import de.tobias.playpad.design.GlobalDesign; import de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect; -import de.tobias.playpad.layout.desktop.DesktopPadDragListener; +import de.tobias.playpad.layout.desktop.pad.DesktopPadDragListener; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.midi.MidiListener; import de.tobias.playpad.pad.Pad; 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 81b5e199..8a9fbce0 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java @@ -11,7 +11,7 @@ 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.midi.Midi; -import de.tobias.playpad.view.ColorView; +import de.tobias.playpad.view.ColorPickerView; import de.tobias.utils.ui.ContentViewController; import de.tobias.utils.ui.icon.FontAwesomeType; import de.tobias.utils.ui.icon.FontIcon; @@ -84,7 +84,7 @@ public class DoubleFeedbackViewController extends ContentViewController { color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT)); } - ColorView colorView = new ColorView(color, device.getColors(), item -> + ColorPickerView colorView = new ColorPickerView(color, device.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 94cfd8b3..b29ff571 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java @@ -11,7 +11,7 @@ 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.ColorView; +import de.tobias.playpad.view.ColorPickerView; import de.tobias.utils.ui.ContentViewController; import de.tobias.utils.ui.icon.FontAwesomeType; import de.tobias.utils.ui.icon.FontIcon; @@ -65,7 +65,7 @@ public class SingleFeedbackViewController extends ContentViewController { { DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); - ColorView colorView = new ColorView(color, device.getColors(), item -> + ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item -> { colorChooser.hide(); if (item instanceof DisplayableFeedbackColor) { diff --git a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjustable.java b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjustable.java index 01df8244..5e03b647 100644 --- a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjustable.java +++ b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjustable.java @@ -2,10 +2,27 @@ package de.tobias.playpad.action.feedback; import de.tobias.playpad.pad.Pad; +/** + * Eine Action implementiert dieses Interface, falls die Feedbackfarbe automatisch an die Farbe der Kachel angepasst werden soll. + * + * @author tobias + * @since 5.0.0 + * + */ public interface ColorAdjustable { + /** + * Ist dieses Feature ative. + * + * @return <code>true</code> Active + */ public boolean isAutoFeedbackColors(); - + + /** + * Kachel, die mit dieser Action verkünpft ist. + * + * @return Pad + */ public Pad getPad(); - + } diff --git a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java index 301578f1..79711822 100644 --- a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java +++ b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java @@ -75,13 +75,13 @@ public class ColorAdjuster { } if (layoutStdColor != null) { - DisplayableFeedbackColor associator = searchColor(colorAssociator, FeedbackMessage.STANDARD, layoutStdColor); - colorAssociator.setColor(FeedbackMessage.STANDARD, associator.mapperFeedbackValue()); + DisplayableFeedbackColor matchedColor = searchColor(colorAssociator, FeedbackMessage.STANDARD, layoutStdColor); + colorAssociator.setColor(FeedbackMessage.STANDARD, matchedColor); } if (layoutEvColor != null) { - DisplayableFeedbackColor associator = searchColor(colorAssociator, FeedbackMessage.EVENT, layoutEvColor); - colorAssociator.setColor(FeedbackMessage.EVENT, associator.mapperFeedbackValue()); + DisplayableFeedbackColor matchedColor = searchColor(colorAssociator, FeedbackMessage.EVENT, layoutEvColor); + colorAssociator.setColor(FeedbackMessage.EVENT, matchedColor); } } } diff --git a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAssociator.java b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAssociator.java index abdda9d2..339f72a9 100644 --- a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAssociator.java +++ b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAssociator.java @@ -2,15 +2,51 @@ package de.tobias.playpad.action.feedback; import javafx.scene.paint.Color; +/** + * Dieses Interface wird in einem Mapper implementiert. Dabei handelt er die Anfragen für das Mapping von Farben. + * + * @author tobias + * @since 5.0.0 + */ public interface ColorAssociator { + /** + * Gibt die Gerätefarben zurück. Dabei enthalten diese ein Int Value und ein Paint. + * + * @return Liste an Farben + */ public DisplayableFeedbackColor[] getColors(); + /** + * Standardfarbe, falls nichts passendes gefunden wurde. + * + * @return Standardfarbe + */ public DisplayableFeedbackColor getDefaultStandardColor(); + /** + * Eventfarbe, falls nichts passendes gefunden wurde. + * + * @return Eventfarbe + */ public DisplayableFeedbackColor getDefaultEventColor(); - public void setColor(FeedbackMessage feedbackMessage, int value); + /** + * Setzt die Feedback Farbe für die Instanz des Mappers. + * + * @param feedbackMessage + * Art der Feedbacknachricht + * @param color + * Matched Color + */ + public void setColor(FeedbackMessage feedbackMessage, DisplayableFeedbackColor color); + /** + * Sucht zu einer {@link Color} die passende FeedbackColor, falls vorhanden. + * + * @param color + * Kachel Farbe + * @return Feedback Farbe oder null. + */ public DisplayableFeedbackColor map(Color color); } diff --git a/PlayWallCore/src/de/tobias/playpad/design/DesignColorAssociator.java b/PlayWallCore/src/de/tobias/playpad/design/DesignColorAssociator.java index 1fc348f6..958a5e33 100644 --- a/PlayWallCore/src/de/tobias/playpad/design/DesignColorAssociator.java +++ b/PlayWallCore/src/de/tobias/playpad/design/DesignColorAssociator.java @@ -2,10 +2,27 @@ package de.tobias.playpad.design; import javafx.scene.paint.Color; +/** + * Methoden für die Verwaltung der Farben, die an einer Kachel eingestellt sind. Das ist wichtig, falls Kachel eine andere Farbverwaltung + * verwendet (beispiel Lineare Gradient). + * + * @author tobias + * @since 5.0.0 + */ public interface DesignColorAssociator { + /** + * Gibt die Standardfarbe (Kacheln ohne Aktion) zurück. + * + * @return Farbe der Kachel + */ public Color getAssociatedStandardColor(); + /** + * Gibt die Eventfarbe (Kacheln mit Aktion) zurück. + * + * @return Farbe der Kachel + */ public Color getAssociatedEventColor(); } diff --git a/PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java b/PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java new file mode 100644 index 00000000..cfeeae79 --- /dev/null +++ b/PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java @@ -0,0 +1,18 @@ +package de.tobias.playpad.design; + +import java.util.function.Consumer; + +import de.tobias.playpad.DisplayableColor; +import javafx.scene.Node; + +/** + * Wenn vom Design unterstützt, wird hier die GUI für Farbeinstellungen erstellt. + * + * @author tobias + * + */ +public interface IColorPickerView { + + public Node getColorInterface(Consumer<DisplayableColor> onSelection); + +} diff --git a/PlayWallNative/bin/de/tobias/playpad/NativeAudio$NativeAudioDelegate.class b/PlayWallNative/bin/de/tobias/playpad/NativeAudio$NativeAudioDelegate.class new file mode 100644 index 0000000000000000000000000000000000000000..94add9016c45847affc7a8504c1f1c7098ba07d7 GIT binary patch literal 322 zcmX^0Z`VEs1_l!bL3RcvMh3%_RQ;0tq|C%({eqmt%7VlceZRz#%(7I+(v-}66(qJx zYEEi;Vo54H0}CUAKvrT|qJB<dUb?=2QdVkm2_pkXex6%qUS@FyBLj<ur)C%<19yI2 zKx$&PZ)!<u5hDYehNqhwNLVmGFCf1-vm`S=&p9J8FFiGdk%3ji(*-2Q6`WsMl$`38 znUl)MAb@1M9>_vQ1|HA6ywoD+oW$bd)M9o9entjaydGd=5JoZt<^?uJ21W*E1`uFo rVPs%sU}FGzik*Q2Omi}DF)%PNF>r%P9tK_p1_mw$kRCn;0X9wmHiS`V literal 0 HcmV?d00001 diff --git a/PlayWallNative/bin/de/tobias/playpad/NativeAudio.class b/PlayWallNative/bin/de/tobias/playpad/NativeAudio.class new file mode 100644 index 0000000000000000000000000000000000000000..c5f0439f799d55d65ce9dee93b08243b9b005557 GIT binary patch literal 1321 zcmX^0Z`VEs1_l!b8+HaJMh4lGRQ;0tq|C%({eqmt%7VlceZRz#%(7I+(v-}6b_Nzk z27#=^vPAuy#JqHU|D>$c<Pt^(j+E4#)bzxXR7M74AG{{0AerU@)nv`cz-E(~msw)R z$iS?j8OF%K;+&t7%EiFUz|F(J&cMOQ!0(fpm+DuVo0M7<l9-f}%E%z(lb@WJ6P8$% z3F1QqSxPc8iy0Z@@w>sAk%0?jU1nlVW>qR90}IHfj0`Lqo*=tf3ld9<L88Sa`2~y& z?8T`iKKURPtA=M3NC9VhYDrjrPH8Skk%p(H3nK$(F+zw{!_x(%j3p;OF@=#qOvBR$ z5n#b3MVWc&)|yd_4D2bH#Rd5wo4C_cOI%8e5=%1k^B5UGyny`TOeiluFCaBB+c&i& zwTO{{O~cd8O*4#>fssL(hk=!WjhjK0L7kmJjgi5S<Y4DvP+(AGWMIlnVPs(RWMp8; zNlhzZWMFh-WMD1IOwTA`WZ(@hNlec6O)P+huV8*2%xTUUiFxU%DIf<J@G$5xNHH>S z6u_O$=)%ark)P+5nU`6d0a9bi!(hxH#K^#1oLT~lcSZ&?4g4{MHMM{Omn%5Gv?w{% zEfbU!1d!5{9w@9C8F)PN@=}YOa}tY-Q;QiHgppLhY-dnpU}RusU|?Wm-~t6D0|SEq z10yK8F)%W4GB7acGcYnRGB7Z(YHerW+Q`7bz{J4Az`(!;7G!4NWnf_70kc^d_!#&Z z7#KMj1Q<BLv><~Jm==c8B2ZeCK@2P|&L9D%B^ji^v^0YZn3jdAlY`33gJ=d$P((o; zmB_#XcC^qY2Bl*Re47}Qq?A>5GN`aHfLzE7b|D{Fg$x55gDis}gFM)!3ScoI1`P&H z1`rTp&|=UAyIzPvhe4Zxi9wfvfq|KUQILTX6q``%!l2d(g015PS*N~}K_AmLB?dMI zWd;ETRj_Sh3``6R41#dm1Q`q&j2IYUb_g(Vf>Hz24sQk~utNmEcJP4g*vVkRgyA6# z1~vvw27U%@uoaM?7l2v;bv!=<CxaP-In-cdcm!@{Pyz)HBm%j>jx%6jVK788i4~d# bm>4X;QEka!#lXP8#lXm*%D~8A&Bh4;I92(a literal 0 HcmV?d00001 diff --git a/PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandler.class b/PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..e65fdb615d0905222d4e5ac3e7e17bc396deaeb6 GIT binary patch literal 5572 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 literal 0 HcmV?d00001 diff --git a/PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandlerConnect.class b/PlayWallNative/bin/de/tobias/playpad/NativeAudioMacHandlerConnect.class new file mode 100644 index 0000000000000000000000000000000000000000..bd8edabc909d978389efd81ed7a6e477b245fdcd GIT binary patch literal 3366 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 JFidig1OUGNT2cT2 literal 0 HcmV?d00001 diff --git a/PlayWallNative/bin/de/tobias/playpad/NativeAudioTest.class b/PlayWallNative/bin/de/tobias/playpad/NativeAudioTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3228cfd18da92c2aab164674a4ea0aaf208e1cf8 GIT binary patch literal 1146 zcmX^0Z`VEs1_l!bS9S&_Mh3-{RQ;0tq|C%({eqmt%7VlceZRz#%(7I+(v-~nkksN5 zb_Nzk27#=^vPAuy#JqHU|D>$c<Pt^(Hk-`6%o00B24)S-Fh&Lz=lqmZE(T@>P96qU z1~x_pexJ;|RKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*deZL(n1Cj0`Nf ziJ5tf3}PD5J_rW|mlS2@rCV!;aWDunGDPc#7N-^!!#w4ZpIn-onpaY+A5fH^UX+-d zo0(dany2pt@=tnZiGDy%Vr6(@P7a&_@xFdeW)g%24hX%J%ACw3E(T!+QFaCql<)|y zEG|jS<zWzG5NBjy$;nSlVPp{1!0tXtMh1Iy_m$^?^c3qG7^@l?cvR-*sTvu$<rk?M z8H8k{su~%Dr>177=B4Q678vW5Czf$BNHfT?GsrM9$l?t#kb~qvLFI|XDN&pZ!VC&L z42ld&j10{Ar6r6Eq7Y@7`T7AxnRz9_B}J);xz-@tRCpLv8PpgVxYJWhTuO@)OEUBG z7#UbJJT+ao7&I8P*cmh#8HB;{fvTH_L7PE`k%7GcWMB?hkBep)$VfdN27LwtMg|s8 znuC}X#>xNzDO?OD3});MrYNBtl2MeJn8L$g&S1gFz*?M>npyzT=LIs)iou4R!J3gl z4(tYSBK6EGNi8ZWEhtG%aji&BEdaThhrt${F2T+TE=f$z4k=1ZPGw|ZNi0e)W@He? zlBgIN7*iP;6d+-P(`0K#241j%zKI3UWX%<vUs{x$>Xr#g_##Lt36!PuKn`V4WME`q z2K$+bff1Bv7#JDY85kJ!85kKD85kH?wYD>GY-C_yU}E56U|?Va3o<isGcYjlfZ41J zJPf=H3=EtMd<^_h%@Y`y8JHLt7_@~1b}$Gr3rXx?kP6?#AkVymL3ta4I`a+&T@ePu z9Sp|H|NrvQ-o{|L{QoBgMg}Pc1qNjXD+Xq;RZ0vTU<+9pI2d>sI2ptkxEQ1u_!txz z_!(3f1Q;|Jc)-pOgIL92$6(LEz@Wmw!r;K*$iT?p#K6G7&cGz)!OmdCz{ubX_Ja!m D^%oWx literal 0 HcmV?d00001 diff --git a/PlayWallNative/bin/de_tobias_playpad_NativeAudio.h b/PlayWallNative/bin/de_tobias_playpad_NativeAudio.h new file mode 100644 index 00000000..4bd71030 --- /dev/null +++ b/PlayWallNative/bin/de_tobias_playpad_NativeAudio.h @@ -0,0 +1,85 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class de_tobias_playpad_NativeAudio */ + +#ifndef _Included_de_tobias_playpad_NativeAudio +#define _Included_de_tobias_playpad_NativeAudio +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: de_tobias_playpad_NativeAudio + * Method: play + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_play + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: pause + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_pause + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: stop + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_stop + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: getVolume + * Signature: (I)D + */ +JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getVolume + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: setVolume + * Signature: (ID)V + */ +JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_setVolume + (JNIEnv *, jclass, jint, jdouble); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: load + * Signature: (ILjava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_de_tobias_playpad_NativeAudio_load + (JNIEnv *, jclass, jint, jstring); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: dispose + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_dispose + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: getDuration + * Signature: (I)D + */ +JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getDuration + (JNIEnv *, jclass, jint); + +/* + * Class: de_tobias_playpad_NativeAudio + * Method: getPosition + * Signature: (I)D + */ +JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getPosition + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif -- GitLab