diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java index e8f67631f964225e4daafa8fce98f5f107f7aad4..67dfcc1425177a017202d444277022733bc6e987 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java @@ -54,7 +54,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> { this.padView.setOnDragOver(this::dragOver); this.padView.setOnDragExited(event -> dragExited()); this.padView.setOnDragDropped(this::dragDropped); - this.padView.setOnDragDetected(this::dragDetacted); + this.padView.setOnDragDetected(this::dragDetected); } void removeListener() { @@ -76,52 +76,52 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> { } private void dragOver(DragEvent event) { - if (Profile.currentProfile().getProfileSettings().isLocked()) { + if (Profile.currentProfile().getProfileSettings().isLocked() || checkLiveMode()) { return; } if (event.getGestureSource() != this && event.getDragboard().hasFiles()) { - File file = event.getDragboard().getFiles().get(0); - if (file.isFile()) { - // Check Live Mode - if (checkLiveMode()) { - return; - } + handleFileDropOver(event); + } else if (event.getDragboard().hasContent(dataFormat)) { + handlePadDragOver(event); + } + event.consume(); + } - // Build In Filesupport - PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents(); - Set<PadContentFactory> connects = registry.getPadContentConnectsForFile(file.toPath()); + private void handleFileDropOver(DragEvent event) { + final File file = event.getDragboard().getFiles().get(0); + if (file.isFile()) { - if (!connects.isEmpty()) { - if (fileHud == null) { - fileHud = new FileDragOptionView(padView); - } - fileHud.showOptions(connects); + // built-in file support + PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents(); + Set<PadContentFactory> connects = registry.getPadContentConnectsForFile(file.toPath()); - event.acceptTransferModes(TransferMode.LINK); - return; + if (!connects.isEmpty()) { + if (fileHud == null) { + fileHud = new FileDragOptionView(padView); } + fileHud.showOptions(connects); + + event.acceptTransferModes(TransferMode.LINK); } } + } - // Drag and Drop von Pads - if (event.getDragboard().hasContent(dataFormat)) { - PadIndex index = (PadIndex) event.getDragboard().getContent(dataFormat); - if (!currentPad.getPadIndex().equals(index)) { - - Collection<PadDragMode> connects = PlayPadPlugin.getRegistries().getDragModes().getComponents(); + private void handlePadDragOver(DragEvent event) { + PadIndex index = (PadIndex) event.getDragboard().getContent(dataFormat); + if (!currentPad.getPadIndex().equals(index)) { - if (!connects.isEmpty()) { - if (padHud == null) { - padHud = new PadDragOptionView(padView); - } - padHud.showDropOptions(connects); + Collection<PadDragMode> connects = PlayPadPlugin.getRegistries().getDragModes().getComponents(); - event.acceptTransferModes(TransferMode.MOVE); + if (!connects.isEmpty()) { + if (padHud == null) { + padHud = new PadDragOptionView(padView); } + padHud.showDropOptions(connects); + + event.acceptTransferModes(TransferMode.MOVE); } } - event.consume(); } private void dragExited() { @@ -135,72 +135,81 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> { // Drag Content ist los gelassen am Ziel private void dragDropped(DragEvent event) { - Project project = PlayPadPlugin.getInstance().getCurrentProject(); + final Project project = PlayPadPlugin.getInstance().getCurrentProject(); - Dragboard db = event.getDragboard(); + final Dragboard dragboard = event.getDragboard(); boolean success = false; // File Handling - if (db.hasFiles()) { - File file = db.getFiles().get(0); - - final PadContentFactory connect = fileHud.getSelectedConnect(); - if (connect != null) { - // stop pad if playing - if (currentPad.getContent() != null && currentPad.getStatus().equals(PadStatus.PLAY)) { - currentPad.getContent().stop(); - currentPad.stop(); - } + if (dragboard.hasFiles()) { + handleFileDragDropped(dragboard); + } - if (currentPad.getContent() == null || !currentPad.getContent().getType().equals(connect.getType())) { - currentPad.setContentType(connect.getType()); - } + // Pad DnD + if (dragboard.hasContent(dataFormat)) { + success = handlePadDragDropped(project, dragboard, success); + } + // Event Completion + event.setDropCompleted(success); + event.consume(); + } - if (currentPad.isPadVisible()) { - currentPad.getController().getView().showBusyView(true); - } + private void handleFileDragDropped(Dragboard dragboard) { + File file = dragboard.getFiles().get(0); - if (currentPad.getContent() instanceof Playlistable) { - this.currentPad.addPath(file.toPath()); - } else { - this.currentPad.setPath(file.toPath()); - } + final PadContentFactory connect = fileHud.getSelectedConnect(); + if (connect != null) { + // stop pad if playing + if (currentPad.getContent() != null && currentPad.getStatus().equals(PadStatus.PLAY)) { + currentPad.getContent().stop(); + currentPad.stop(); + } - if (currentPad.getController() != null) { - final IPadView padView = currentPad.getController().getView(); - padView.setContentView(currentPad); - padView.addDefaultElements(currentPad); - } + if (currentPad.getContent() == null || !currentPad.getContent().getType().equals(connect.getType())) { + currentPad.setContentType(connect.getType()); + } + + if (currentPad.isPadVisible()) { + currentPad.getController().getView().showBusyView(true); + } + + if (currentPad.getContent() instanceof Playlistable) { + this.currentPad.addPath(file.toPath()); + } else { + this.currentPad.setPath(file.toPath()); + } + + if (currentPad.getController() != null) { + final IPadView padView = currentPad.getController().getView(); + padView.setContentView(currentPad); + padView.addDefaultElements(currentPad); } } + } - // Pad DnD - if (db.hasContent(dataFormat)) { - Object data = db.getContent(dataFormat); - if (data instanceof PadIndex) { - PadIndex srcIndex = (PadIndex) data; - PadIndex newIndex = currentPad.getPadIndex(); // Lister ist auf Ziel Pad, daher ist der Index von currentPad - - // Drag handle - PadDragMode mode = padHud.getSelectedPadDragMode(); - success = mode.handle(srcIndex, newIndex, project); - padHud.hide(); - - // Update der Pad Views nach dem DnD - IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController(); - mainViewController.showPage(mainViewController.getPage()); - - if (project.getProjectReference().isSync()) { - CommandManager.execute(Commands.PAD_MOVE); - } + private boolean handlePadDragDropped(Project project, Dragboard dragboard, boolean success) { + Object data = dragboard.getContent(dataFormat); + if (data instanceof PadIndex) { + PadIndex srcIndex = (PadIndex) data; + PadIndex newIndex = currentPad.getPadIndex(); // Lister ist auf Ziel Pad, daher ist der Index von currentPad + + // Drag handle + PadDragMode mode = padHud.getSelectedPadDragMode(); + success = mode.handle(srcIndex, newIndex, project); + padHud.hide(); + + // Update der Pad Views nach dem DnD + IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController(); + mainViewController.showPage(mainViewController.getPage()); + + if (project.getProjectReference().isSync()) { + CommandManager.execute(Commands.PAD_MOVE); } } - // Event Completion - event.setDropCompleted(success); - event.consume(); + return success; } - private void dragDetacted(MouseEvent event) { + private void dragDetected(MouseEvent event) { if (connect.getEditMode() == DesktopEditMode.DRAG) { if (checkLiveMode()) { return; @@ -234,9 +243,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> { private boolean checkLiveMode() { GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings(); if (currentPad.getProject() != null) { - if (globalSettings.isLiveMode() && globalSettings.isLiveModeFile() && currentPad.getProject().getActivePlayers() > 0) { - return true; - } + return globalSettings.isLiveMode() && globalSettings.isLiveModeFile() && currentPad.getProject().getActivePlayers() > 0; } return false; } diff --git a/PlayWall/src/main/java/de/tobias/playpad/view/PadDragOptionView.java b/PlayWall/src/main/java/de/tobias/playpad/view/PadDragOptionView.java index 205250172cbe517acfb7cb51d1f052de96eae133..7dac34cde41953601b45c78688458d1418ed47ec 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/view/PadDragOptionView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/view/PadDragOptionView.java @@ -100,7 +100,7 @@ public class PadDragOptionView { parent.getChildren().add(optionPane); optionPane.getChildren().clear(); - for (PadDragMode connect : options.stream().sorted().toArray(value -> new PadDragMode[value])) { + for (PadDragMode connect : options.stream().sorted().toArray(PadDragMode[]::new)) { Label label = new Label(); label.getStyleClass().add("dnd-file-option");