diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java index 0e787f8e836a1d6c9ef0ca43c37786d97130d84e..fa918c275db9cfdaa9d03a420fc6313e6d3265d0 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java @@ -37,6 +37,7 @@ import de.tobias.playpad.viewcontroller.main.MainViewController; import de.tobias.playpad.viewcontroller.option.IProfileSettingsViewController; import de.tobias.playpad.volume.GlobalVolume; import de.tobias.playpad.volume.PadVolume; +import de.tobias.playpad.volume.VolumeManager; import de.tobias.updater.client.Updatable; import de.tobias.updater.client.UpdateRegistery; import de.tobias.utils.application.App; @@ -278,8 +279,9 @@ public class PlayPadImpl implements PlayPad { } // Volume Management - Pad.getVolumeManager().addFilter(new GlobalVolume()); - Pad.getVolumeManager().addFilter(new PadVolume()); + VolumeManager volumeManager = VolumeManager.getInstance(); + volumeManager.addFilter(new GlobalVolume()); + volumeManager.addFilter(new PadVolume()); // Mapper BaseMapperOverviewViewController.setInstance(new MapperOverviewViewController()); 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 4d366155e1475e3cb5fa627265726edd18dcd244..254371b6215a90ed9665e0482574febd63ae6866 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java @@ -57,13 +57,13 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> { } public void addListener() { - this.padView.setOnDragOver(event -> dragOver(event)); + this.padView.setOnDragOver(this::dragOver); this.padView.setOnDragExited(event -> dragExited()); - this.padView.setOnDragDropped(event -> dragDropped(event)); - this.padView.setOnDragDetected(event -> dragDetacted(event)); + this.padView.setOnDragDropped(this::dragDropped); + this.padView.setOnDragDetected(this::dragDetacted); } - public void removeListener() { + void removeListener() { this.padView.setOnDragOver(null); this.padView.setOnDragExited(null); this.padView.setOnDragDropped(null); 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 2bc58a613630428c13db0e5a594fafb19c063083..c7b506c3defaba50f7de39e6e0cb1b1ed0244bc5 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -57,7 +57,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle private static DesktopMainLayoutFactory connect; - public DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutFactory connect) { + DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutFactory connect) { this.padView = padView; if (DesktopPadViewController.connect != connect) // Set once diff --git a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java index da672b214f0672fe402588161f0235fefdc6b631..61b760270059bdd99aa1a5f7de0183a8ec3411b3 100644 --- a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java +++ b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java @@ -73,7 +73,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, @Override public void updateVolume() { - double volume = Pad.getVolumeManager().computeVolume(getPad()); + double volume = VolumeManager.getInstance().computeVolume(getPad()); audioHandler.setVolume(volume); } @@ -129,9 +129,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, @Override public void onFadeLevelChange(double level) { Pad pad = getPad(); - VolumeManager manager = Pad.getVolumeManager(); - - audioHandler.setVolume(level * manager.computeVolume(pad)); + audioHandler.setVolume(level * VolumeManager.getInstance().computeVolume(pad)); } @Override diff --git a/PlayWallCore/src/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/de/tobias/playpad/pad/Pad.java index a7e340fc5fb8f88eab2797e5d83fba1178445fdc..116fea6be67584baf20878449d6db60fe91b283e 100644 --- a/PlayWallCore/src/de/tobias/playpad/pad/Pad.java +++ b/PlayWallCore/src/de/tobias/playpad/pad/Pad.java @@ -1,8 +1,5 @@ package de.tobias.playpad.pad; -import java.nio.file.Path; -import java.util.UUID; - import de.tobias.playpad.pad.content.PadContent; import de.tobias.playpad.pad.content.play.Pauseable; import de.tobias.playpad.pad.listener.trigger.PadTriggerContentListener; @@ -12,22 +9,15 @@ import de.tobias.playpad.pad.viewcontroller.IPadViewController; import de.tobias.playpad.project.Project; import de.tobias.playpad.project.page.PadIndex; import de.tobias.playpad.registry.NoSuchComponentException; -import de.tobias.playpad.volume.VolumeManager; -import javafx.beans.property.IntegerProperty; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.ReadOnlyIntegerProperty; -import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.property.SimpleObjectProperty; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; +import javafx.beans.property.*; -public class Pad implements Cloneable { - - private static final VolumeManager volumeManager; +import java.nio.file.Path; +import java.util.UUID; - static { - volumeManager = new VolumeManager(); - } +/** + * Container for Media (PadContent). It represents a slot on a page. + */ +public class Pad implements Cloneable { // Verwaltung private UUID uuid; @@ -177,7 +167,7 @@ public class Pad implements Cloneable { return; } } - // Pause nur wenn Pause möglich + // Only set pause if pad supports pause if (status == PadStatus.PAUSE && !(getContent() instanceof Pauseable)) { return; } @@ -293,11 +283,6 @@ public class Pad implements Cloneable { return (indexProperty.get() + 1) + " - " + nameProperty.get(); } - // Volume Manager - public static VolumeManager getVolumeManager() { - return volumeManager; - } - // Clone @Override public Pad clone() throws CloneNotSupportedException { diff --git a/PlayWallCore/src/de/tobias/playpad/pad/PadStatusListener.java b/PlayWallCore/src/de/tobias/playpad/pad/PadStatusListener.java index f0d641051e54357468c82c94459df5c445f37c96..2e924c49651ac88cd2ddb596e47a889647fa2617 100644 --- a/PlayWallCore/src/de/tobias/playpad/pad/PadStatusListener.java +++ b/PlayWallCore/src/de/tobias/playpad/pad/PadStatusListener.java @@ -18,7 +18,7 @@ public class PadStatusListener implements ChangeListener<PadStatus> { // Utils für Single Pad Playing private static Pad currentPlayingPad; // Nur wenn ProfileSettings.isMultiplePlayer == false - public PadStatusListener(Pad pad) { + PadStatusListener(Pad pad) { this.pad = pad; } @@ -30,7 +30,8 @@ public class PadStatusListener implements ChangeListener<PadStatus> { if (newValue == PadStatus.PLAY) { if (pad.getContent() != null) { PlayPadPlugin.getImplementation().getPadListener().forEach(listener -> listener.onPlay(pad)); - pad.getProject().increaseActivePlayers(); + + pad.getProject().updateActivePlayerProperty(); // bei Single Pad Playing wird das alte Pad beendet. if (!profileSettings.isMultiplePlayer()) { @@ -65,7 +66,7 @@ public class PadStatusListener implements ChangeListener<PadStatus> { } else if (newValue == PadStatus.STOP) { if (pad.getContent() != null) { PlayPadPlugin.getImplementation().getPadListener().forEach(listener -> listener.onStop(pad)); - pad.getProject().dereaseActivePlayers(); + pad.getProject().updateActivePlayerProperty(); if (pad.getContent() instanceof Fadeable && !pad.isEof() && padSettings.getFade().isFadeOutStop()) { // Fade nur wenn Pad // nicht am ende ist @@ -73,11 +74,14 @@ public class PadStatusListener implements ChangeListener<PadStatus> { { pad.getContent().stop(); pad.setStatus(PadStatus.READY); + pad.getProject().updateActivePlayerProperty(); }); } else { boolean shouldBeReady = pad.getContent().stop(); - if (shouldBeReady) + if (shouldBeReady) { pad.setStatus(PadStatus.READY); + pad.getProject().updateActivePlayerProperty(); + } } } } diff --git a/PlayWallCore/src/de/tobias/playpad/project/Project.java b/PlayWallCore/src/de/tobias/playpad/project/Project.java index 100a296d8ac438e3a7fd450570b7339be4a4afb2..8fb4da8c38926a6d4050e8d7b20bcd1889ae43f9 100644 --- a/PlayWallCore/src/de/tobias/playpad/project/Project.java +++ b/PlayWallCore/src/de/tobias/playpad/project/Project.java @@ -56,20 +56,20 @@ public class Project { private final ProjectReference projectReference; private ProjectSettings settings; + private IntegerProperty activePlayerProperty; /** * Liste mit den aktuellen Laufzeitfehlern. */ private transient ObservableList<PadException> exceptions; - private transient IntegerProperty activePlayers; public Project(ProjectReference ref) { this.projectReference = ref; this.pages = new ArrayList<>(); this.settings = new ProjectSettings(); + this.activePlayerProperty = new SimpleIntegerProperty(); this.exceptions = FXCollections.observableArrayList(); - this.activePlayers = new SimpleIntegerProperty(); } public ProjectSettings getSettings() { @@ -80,14 +80,6 @@ public class Project { return projectReference; } - public long getPlayedPlayers() { - return getPads().stream().filter(p -> p.getStatus() == PadStatus.PLAY || p.getStatus() == PadStatus.PAUSE).count(); - } - - public boolean hasPlayedPlayers() { - return getPlayedPlayers() != 0; - } - public Pad getPad(int x, int y, int page) { return getPage(page).getPad(x, y); } @@ -222,24 +214,19 @@ public class Project { } public int getActivePlayers() { - return activePlayers.get(); + return (int) getPads().stream().filter(p -> p.getStatus() == PadStatus.PLAY || p.getStatus() == PadStatus.PAUSE).count(); } public boolean hasActivePlayers() { return getActivePlayers() > 0; } - public void increaseActivePlayers() { - activePlayers.set(getActivePlayers() + 1); + public IntegerProperty activePlayerProperty() { + return activePlayerProperty; } - public void dereaseActivePlayers() { - if (activePlayers.greaterThan(0).get()) - activePlayers.set(getActivePlayers() - 1); - } - - public ReadOnlyIntegerProperty activePlayerProperty() { - return activePlayers; + public void updateActivePlayerProperty() { + activePlayerProperty.set(getActivePlayers()); } // Exceptions @@ -257,13 +244,7 @@ public class Project { Platform.runLater(() -> removeExceptions(pad)); return; } - Iterator<PadException> i = exceptions.iterator(); - while (i.hasNext()) { - PadException exception = i.next(); - if (exception.getPad().equals(pad)) { - i.remove(); - } - } + exceptions.removeIf(exception -> exception.getPad().equals(pad)); } public void removeException(PadException exception) { diff --git a/PlayWallCore/src/de/tobias/playpad/volume/VolumeManager.java b/PlayWallCore/src/de/tobias/playpad/volume/VolumeManager.java index 8a809d40be62223c8fa99ab307f68912547594bf..5e3ef1ea7b0ae360ced0b6e22c246d65a4c7038d 100644 --- a/PlayWallCore/src/de/tobias/playpad/volume/VolumeManager.java +++ b/PlayWallCore/src/de/tobias/playpad/volume/VolumeManager.java @@ -7,9 +7,19 @@ import de.tobias.playpad.pad.Pad; public class VolumeManager { + private static final VolumeManager instance; + + static { + instance = new VolumeManager(); + } + + public static VolumeManager getInstance() { + return instance; + } + private List<VolumeFilter> filters; - public VolumeManager() { + private VolumeManager() { this.filters = new ArrayList<>(); } diff --git a/PluginMedia/src/de/tobias/playpad/mediaplugin/video/VideoContent.java b/PluginMedia/src/de/tobias/playpad/mediaplugin/video/VideoContent.java index d975de94f2b4de3b406e99a0c2b82ca95a478eff..589aa59945c462025c4625df62d942c2e47eb12a 100644 --- a/PluginMedia/src/de/tobias/playpad/mediaplugin/video/VideoContent.java +++ b/PluginMedia/src/de/tobias/playpad/mediaplugin/video/VideoContent.java @@ -70,8 +70,7 @@ public class VideoContent extends PadContent implements Pauseable, Durationable @Override public void updateVolume() { if (player != null) { - VolumeManager manager = Pad.getVolumeManager(); - double volume = manager.computeVolume(getPad()); + double volume = VolumeManager.getInstance().computeVolume(getPad()); player.setVolume(volume); } }