diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index 0bd8aab676d73a3bd10ec39b37c7f27e69c7af19..fd9acc77f4555699721cdea533a759b8a673a3fd 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -24,7 +24,6 @@ import de.tobias.playpad.viewcontroller.option.pad.PadSettingsViewController; import javafx.beans.value.ChangeListener; import javafx.event.ActionEvent; import javafx.event.EventHandler; -import javafx.stage.Stage; import javafx.util.Duration; public class DesktopPadViewController extends AbstractPadViewController implements EventHandler<ActionEvent> { @@ -209,15 +208,11 @@ public class DesktopPadViewController extends AbstractPadViewController implemen IMainViewController mvc = PlayPadPlugin.getInstance().getMainViewController(); if (mvc != null) { - if (pad.getProject() != null) { - if (settings.isLiveMode() && settings.isLiveModeSettings() && pad.getProject().getActivePlayers() > 0) { - return; - } + if (pad.getProject() != null && settings.isLiveMode() && settings.isLiveModeSettings() && pad.getProject().getActivePlayers() > 0) { + return; } - Stage owner = mvc.getStage(); - - PadSettingsViewController padSettingsViewController = new PadSettingsViewController(pad, owner); + PadSettingsViewController padSettingsViewController = new PadSettingsViewController(pad, mvc); padSettingsViewController.getStageContainer().ifPresent(nvcStage -> nvcStage.addCloseHook(() -> { if (padView != null && pad != null) padView.setTriggerLabelActive(pad.getPadSettings().hasTriggerItems()); diff --git a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItemFactory.java b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItemFactory.java index 98290adbcd0df99adf16698fe28258999e072a94..e103e69319bbd4457628bb024cc4f812e00d2c66 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItemFactory.java +++ b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItemFactory.java @@ -6,6 +6,7 @@ import de.tobias.playpad.Strings; import de.tobias.playpad.tigger.Trigger; import de.tobias.playpad.tigger.TriggerItem; import de.tobias.playpad.tigger.TriggerItemFactory; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.pad.trigger.CartTriggerViewController; public class CartTriggerItemFactory extends TriggerItemFactory { @@ -20,8 +21,8 @@ public class CartTriggerItemFactory extends TriggerItemFactory { } @Override - public NVC getSettingsController(TriggerItem item) { - return new CartTriggerViewController((CartTriggerItem) item); + public NVC getSettingsController(TriggerItem item, IMainViewController mainViewController) { + return new CartTriggerViewController((CartTriggerItem) item, mainViewController); } @Override diff --git a/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerItemFactory.java b/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerItemFactory.java index 73d2447a29858d8ba7ea630749aa89d8cec357dc..fa908a635f0a02ded7f7e3c4518a21a6c5efef05 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerItemFactory.java +++ b/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerItemFactory.java @@ -6,6 +6,7 @@ import de.tobias.playpad.Strings; import de.tobias.playpad.tigger.Trigger; import de.tobias.playpad.tigger.TriggerItem; import de.tobias.playpad.tigger.TriggerItemFactory; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.pad.trigger.VolumeTriggerViewController; public class VolumeTriggerItemFactory extends TriggerItemFactory { @@ -20,8 +21,8 @@ public class VolumeTriggerItemFactory extends TriggerItemFactory { } @Override - public NVC getSettingsController(TriggerItem item) { - return new VolumeTriggerViewController((VolumeTriggerItem) item); + public NVC getSettingsController(TriggerItem item, IMainViewController mainViewController) { + return new VolumeTriggerViewController((VolumeTriggerItem) item, mainViewController); } @Override diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java index 6978c980df2c3b71ed0a1928c142b6f3a44832ab..efccf7b0e68031570f6c1e06d0a82ab2de46366f 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java @@ -14,13 +14,13 @@ import de.tobias.playpad.pad.content.Playlistable; import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.viewcontroller.IPadSettingsViewController; import de.tobias.playpad.viewcontroller.PadSettingsTabViewController; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.stage.Stage; -import javafx.stage.Window; import java.util.ArrayList; import java.util.List; @@ -36,7 +36,7 @@ public class PadSettingsViewController extends NVC implements IPadSettingsViewCo @FXML private Button finishButton; - public PadSettingsViewController(Pad pad, Window owner) { + public PadSettingsViewController(Pad pad, IMainViewController mainViewController) { load("view/option/pad", "PadSettingsView", Localization.getBundle()); this.pad = pad; @@ -46,7 +46,7 @@ public class PadSettingsViewController extends NVC implements IPadSettingsViewCo } addTab(new DesignPadTabViewController(pad)); addTab(new PlayerPadTabViewController(pad)); - addTab(new TriggerPadTabViewController(pad)); + addTab(new TriggerPadTabViewController(pad, mainViewController)); if (pad.getContent() != null) { try { @@ -65,7 +65,7 @@ public class PadSettingsViewController extends NVC implements IPadSettingsViewCo } NVCStage nvcStage = applyViewControllerToStage(); - nvcStage.initOwner(owner); + nvcStage.initOwner(mainViewController.getStage()); nvcStage.addCloseHook(this::onFinish); addCloseKeyShortcut(() -> finishButton.fire()); diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java index 33fd3432634f564d5718ba8fc85d4fc4725a42b7..d9e1d8fc62dee9745734c99a475b77898a0bf5ea 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java @@ -8,6 +8,7 @@ import de.tobias.playpad.tigger.TriggerPoint; import de.tobias.playpad.trigger.TriggerDisplayable; import de.tobias.playpad.viewcontroller.PadSettingsTabViewController; import de.tobias.playpad.viewcontroller.cell.DisplayableTreeCell; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.pad.trigger.TriggerPointViewController; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; @@ -26,9 +27,11 @@ public class TriggerPadTabViewController extends PadSettingsTabViewController im @FXML private VBox contentView; - private Pad pad; + private final Pad pad; + private final IMainViewController mainViewController; - TriggerPadTabViewController(Pad pad) { + TriggerPadTabViewController(Pad pad, IMainViewController mainViewController) { + this.mainViewController = mainViewController; load("view/option/pad", "TriggerTab", Localization.getBundle()); this.pad = pad; } @@ -61,7 +64,7 @@ public class TriggerPadTabViewController extends PadSettingsTabViewController im if (newValue != null) { TriggerDisplayable triggerWrapper = newValue.getValue(); - TriggerPointViewController controller = new TriggerPointViewController(triggerWrapper); + TriggerPointViewController controller = new TriggerPointViewController(mainViewController, triggerWrapper); contentView.getChildren().setAll(controller.getParent()); VBox.setVgrow(controller.getParent(), Priority.ALWAYS); } diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java index 854bcf6a2be17653929e22e6a8a5ef125c066bd6..1168ae13aedb828a12ba14ff18c14bad68718a1d 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java @@ -8,6 +8,7 @@ import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.project.Project; import de.tobias.playpad.trigger.CartTriggerItem; import de.tobias.playpad.view.main.ProjectPreviewView; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import javafx.beans.InvalidationListener; import javafx.fxml.FXML; import javafx.geometry.Insets; @@ -29,13 +30,13 @@ public class CartTriggerViewController extends NVC { private final CartTriggerItem item; - public CartTriggerViewController(CartTriggerItem item) { + public CartTriggerViewController(CartTriggerItem item, IMainViewController mainViewController) { load("view/option/pad/trigger", "CartTrigger", Localization.getBundle()); this.item = item; Project project = PlayPadMain.getProgramInstance().getCurrentProject(); final List<Pad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList()); - projectPreviewView = new ProjectPreviewView(project, pads); + projectPreviewView = new ProjectPreviewView(project, pads, mainViewController.getPage()); projectPreviewView.setPadding(new Insets(0, 0, 0, 164)); projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> { item.getCarts().clear(); diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java index 4e79c66990bb5cd099a81b4fc5fb2e4a3bb87f0c..85793e58329cc0793f8919085cf1059bd01cb500 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java @@ -10,6 +10,7 @@ import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.tigger.TriggerItem; import de.tobias.playpad.tigger.TriggerItemFactory; import de.tobias.playpad.trigger.TriggerDisplayable; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ContentDisplay; @@ -26,14 +27,16 @@ public class TriggerPointViewController extends NVC { @FXML private HBox buttonBox; + private final IMainViewController mainViewController; private final TriggerDisplayable triggerWrapper; - public TriggerPointViewController(TriggerDisplayable triggerWrapper) { + public TriggerPointViewController(IMainViewController mainViewController, TriggerDisplayable triggerWrapper) { + this.mainViewController = mainViewController; load("view/option/pad/trigger", "TriggerPoint", Localization.getBundle()); this.triggerWrapper = triggerWrapper; for (TriggerItem item : triggerWrapper.getTrigger().getItems()) { - showTriggerItem(item); + showTriggerItem(item, mainViewController); } } @@ -53,7 +56,7 @@ public class TriggerPointViewController extends NVC { TriggerItem triggerItem = factory.newInstance(triggerWrapper.getTrigger()); triggerWrapper.addItem(triggerItem); - showTriggerItem(triggerItem); + showTriggerItem(triggerItem, mainViewController); }); buttonBox.getChildren().add(button); } catch (NoSuchComponentException e) { @@ -62,12 +65,12 @@ public class TriggerPointViewController extends NVC { }); } - private void showTriggerItem(TriggerItem item) { + private void showTriggerItem(TriggerItem item, IMainViewController mainViewController) { try { TriggerItemFactory connect = PlayPadPlugin.getRegistries().getTriggerItems().getFactory(item.getType()); VBox itemBox = new VBox(14); - NVC controller = connect.getSettingsController(item); + NVC controller = connect.getSettingsController(item, mainViewController); if (controller != null) { itemBox.getChildren().add(controller.getParent()); diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java index 10a1a70dfb79ad38c6eedcacaa450384a65cdef9..f48a57341e8a354af30dafc4ead00f256d7955f4 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java @@ -8,6 +8,7 @@ import de.tobias.playpad.pad.Pad; import de.tobias.playpad.project.Project; import de.tobias.playpad.trigger.VolumeTriggerItem; import de.tobias.playpad.view.main.ProjectPreviewView; +import de.tobias.playpad.viewcontroller.main.IMainViewController; import javafx.beans.InvalidationListener; import javafx.fxml.FXML; import javafx.geometry.Insets; @@ -30,20 +31,20 @@ public class VolumeTriggerViewController extends NVC { private Slider durationSlider; @FXML private Label durationLabel; - private ProjectPreviewView projectPreviewView; + private final ProjectPreviewView projectPreviewView; - private VolumeTriggerItem item; + private final VolumeTriggerItem item; - public VolumeTriggerViewController(VolumeTriggerItem item) { + public VolumeTriggerViewController(VolumeTriggerItem item, IMainViewController mainViewController) { load("view/option/pad/trigger", "VolumeTrigger", Localization.getBundle()); this.item = item; volumeSlider.setValue(item.getVolume() * 100.0); durationSlider.setValue(item.getDuration().toSeconds()); - Project project = PlayPadMain.getProgramInstance().getCurrentProject(); + final Project project = PlayPadMain.getProgramInstance().getCurrentProject(); final List<Pad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList()); - projectPreviewView = new ProjectPreviewView(project, pads); + projectPreviewView = new ProjectPreviewView(project, pads, mainViewController.getPage()); projectPreviewView.setPadding(new Insets(0, 0, 0, 164)); projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> { item.getCarts().clear(); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java index 9590d921a24a86a84453ff83acbcce147cb69c91..118dc56017638413688062a0bd742f59ffc05dec 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java @@ -2,6 +2,7 @@ package de.tobias.playpad.tigger; import de.thecodelabs.utils.ui.NVC; import de.tobias.playpad.registry.Component; +import de.tobias.playpad.viewcontroller.main.IMainViewController; public abstract class TriggerItemFactory extends Component { @@ -11,6 +12,6 @@ public abstract class TriggerItemFactory extends Component { public abstract TriggerItem newInstance(Trigger trigger); - public abstract NVC getSettingsController(TriggerItem item); + public abstract NVC getSettingsController(TriggerItem item, IMainViewController mainViewController); } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java index 10bba54fef944f0b3dd71fe6a651bf867b4a54f7..bb9abce473f17fc7c67709fff6fc8630bb3d1869 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java @@ -15,21 +15,21 @@ import java.util.List; public class ProjectPreviewView extends Pagination { - private Project project; + private final Project project; + private final ObservableList<Pad> selected; - private ObservableList<Pad> selected; - - public ProjectPreviewView(Project project, List<Pad> preSelect) { + public ProjectPreviewView(Project project, List<Pad> preSelect, int initialPage) { super(project.getPages().size()); this.project = project; this.selected = FXCollections.observableArrayList(preSelect); + setCurrentPageIndex(initialPage); setPageFactory(index -> { GridPane gridPane = new GridPane(); gridPane.setHgap(7); gridPane.setVgap(7); - Page page = project.getPage(index); + final Page page = project.getPage(index); for (int x = 0; x < project.getSettings().getColumns(); x++) { for (int y = 0; y < project.getSettings().getRows(); y++) { final Pad pad = page.getPad(x, y);