diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index d36cee921cab9ce00daf3b7e440c35fb7c19f76d..e19862184dafb6901f492595b64b12815ae7553e 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -266,6 +266,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro colorButton.setSelected(true); } + mainViewController.getPadViews().forEach(i -> i.getViewController().updateButtonDisable()); } private void initLayoutMenu() { @@ -561,7 +562,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro void dragMenuHandler(ActionEvent event) { connect.setEditMode(DesktopEditMode.DRAG); } - + @FXML void pageMenuHandler(ActionEvent event) { connect.setEditMode(DesktopEditMode.PAGE); diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java index b057c89da57f7b36794a7d3ff4fe9b57bf149a88..18169687bfb0e6df89c1401a52eb65c88dd0307b 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java @@ -23,6 +23,7 @@ import de.tobias.playpad.view.FileDragOptionView; import de.tobias.playpad.view.PadDragOptionView; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.utils.util.FileUtils; +import javafx.event.EventHandler; import javafx.scene.SnapshotParameters; import javafx.scene.image.WritableImage; import javafx.scene.input.ClipboardContent; @@ -34,7 +35,7 @@ import javafx.scene.input.TransferMode; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; -public class DesktopPadDragListener { +public class DesktopPadDragListener implements EventHandler<DragEvent> { private static final String PADINDEX_DATATYPE = "de.tobias.playpad.padindex"; private static final DataFormat dataFormat = new DataFormat(PADINDEX_DATATYPE); @@ -53,14 +54,33 @@ public class DesktopPadDragListener { this.connect = connect; this.padView = view.getRootNode(); + } - // Drag and Drop + public void addListener() { this.padView.setOnDragOver(event -> dragOver(event)); this.padView.setOnDragExited(event -> dragExited()); this.padView.setOnDragDropped(event -> dragDropped(event)); this.padView.setOnDragDetected(event -> dragDetacted(event)); } + public void removeListener() { + this.padView.setOnDragOver(null); + this.padView.setOnDragExited(null); + this.padView.setOnDragDropped(null); + this.padView.setOnDragDetected(null); + } + + @Override + public void handle(DragEvent event) { + if (event.getEventType() == DragEvent.DRAG_OVER) { + dragOver(event); + } else if (event.getEventType() == DragEvent.DRAG_EXITED) { + dragExited(); + } else if (event.getEventType() == DragEvent.DRAG_DROPPED) { + dragDropped(event); + } + } + private void dragOver(DragEvent event) { if (Profile.currentProfile().getProfileSettings().isLocked()) { return; diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java index 2864463ce36a8e1fd12b121aa54f9be40d705924..4512069665c2458ad114726081f475473827e80e 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java @@ -387,15 +387,15 @@ public class DesktopPadView implements IPadView { pulseTranslation.play(); } - public void clearIndex() { + public void clearIndexLabel() { indexLabel.setText(""); } - public void clearTime() { + public void clearTimeLabel() { timeLabel.setText(""); } - public void clearPreviewContent() { + public void clearPreviewContentView() { if (previewContent != null) { previewContent.deinit(); } diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index 83794b007579e3565d00072ef614a73f5bc3209f..581856e489b60ae6b02de541129d64abb851ac0f 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -59,11 +59,13 @@ public class DesktopPadViewController implements IPadViewController, EventHandle private DesktopPadDragListener padDragListener; - private DesktopMainLayoutConnect connect; + private static DesktopMainLayoutConnect connect; public DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutConnect connect) { this.padView = padView; - this.connect = connect; + + if (DesktopPadViewController.connect != connect) // Set once + DesktopPadViewController.connect = connect; padLockedListener = new PadLockedListener(this); padStatusListener = new PadStatusListener(this); @@ -103,16 +105,17 @@ public class DesktopPadViewController implements IPadViewController, EventHandle padContentListener.setPad(pad); padPositionListener.setPad(pad); - // Pad Content Chnage + // Add Listener pad.contentProperty().addListener(padContentListener); - // Pad Status Change pad.statusProperty().addListener(padStatusListener); - // First Listener call with new data + // Inital Listener call with new data padContentListener.changed(null, null, pad.getContent()); // Add Duration listener padStatusListener.changed(null, null, pad.getStatus()); + // Add Drag and Drop Listener padDragListener = new DesktopPadDragListener(pad, padView, connect); + padDragListener.addListener(); } catch (Exception e) { e.printStackTrace(); } @@ -124,15 +127,14 @@ public class DesktopPadViewController implements IPadViewController, EventHandle @Override public void removePad() { if (padView != null && pad != null) { - - padView.clearIndex(); - padView.clearPreviewContent(); - padView.clearTime(); - + // Clear VIew + padView.clearIndexLabel(); + padView.clearPreviewContentView(); + padView.clearTimeLabel(); padView.setTriggerLabelActive(false); - padView.loopLabelVisibleProperty().unbind(); + // Remove Bindings & Listener pad.contentProperty().removeListener(padContentListener); pad.statusProperty().removeListener(padStatusListener); @@ -142,6 +144,8 @@ public class DesktopPadViewController implements IPadViewController, EventHandle durationable.positionProperty().removeListener(padPositionListener); } pad.setController(null); + + padDragListener.removeListener(); padDragListener = null; // GUI Cleaning @@ -382,10 +386,20 @@ public class DesktopPadViewController implements IPadViewController, EventHandle padView.getSettingsButton().setDisable(false); } + // Disable Settings and New wenn Locked if (Profile.currentProfile().getProfileSettings().isLocked()) { padView.getNewButton().setDisable(true); padView.getSettingsButton().setDisable(true); } + + // Alles Desktivieren, wenn nicht Play Mode + if (connect.getEditMode() != DesktopEditMode.PLAY) { + padView.getPlayButton().setDisable(true); + padView.getPauseButton().setDisable(true); + padView.getStopButton().setDisable(true); + padView.getNewButton().setDisable(true); + padView.getSettingsButton().setDisable(true); + } } @Override