66 lines
2.2 KiB
Java
66 lines
2.2 KiB
Java
package ctbrec.ui.menu;
|
|
|
|
import java.util.Objects;
|
|
import java.util.function.Consumer;
|
|
|
|
import ctbrec.Model;
|
|
import ctbrec.recorder.Recorder;
|
|
import ctbrec.ui.action.EditGroupAction;
|
|
import ctbrec.ui.action.PauseGroupAction;
|
|
import ctbrec.ui.action.ResumeGroupAction;
|
|
import ctbrec.ui.action.StopGroupAction;
|
|
import javafx.scene.Node;
|
|
import javafx.scene.control.Menu;
|
|
import javafx.scene.control.MenuItem;
|
|
|
|
public class ModelGroupMenuBuilder {
|
|
|
|
private Model model;
|
|
private Recorder recorder;
|
|
private Node source;
|
|
private Consumer<Model> callback;
|
|
|
|
public ModelGroupMenuBuilder model(Model model) {
|
|
this.model = Objects.requireNonNull(model, "Model cannot be null");
|
|
return this;
|
|
}
|
|
|
|
public ModelGroupMenuBuilder recorder(Recorder recorder) {
|
|
this.recorder = Objects.requireNonNull(recorder, "Recorder cannot be null");
|
|
return this;
|
|
}
|
|
|
|
public ModelGroupMenuBuilder node(Node source) {
|
|
this.source = Objects.requireNonNull(source, "Node cannot be null");
|
|
return this;
|
|
}
|
|
|
|
public ModelGroupMenuBuilder callback(Consumer<Model> callback) {
|
|
this.callback = callback;
|
|
return this;
|
|
}
|
|
|
|
public Menu build() {
|
|
Objects.requireNonNull(model, "Model has to be set");
|
|
Objects.requireNonNull(recorder, "Recorder has to be set");
|
|
Objects.requireNonNull(source, "Node has to be set");
|
|
|
|
var menu = new Menu("Group");
|
|
|
|
var editGroup = new MenuItem("Edit group");
|
|
editGroup.setOnAction(e -> new EditGroupAction(source, recorder, model).execute(callback));
|
|
|
|
var resumeAllOfGroup = new MenuItem("Resume all");
|
|
resumeAllOfGroup.setOnAction(e -> new ResumeGroupAction(source, recorder, model).execute(callback));
|
|
|
|
var pauseAllOfGroup = new MenuItem("Pause all");
|
|
pauseAllOfGroup.setOnAction(e -> new PauseGroupAction(source, recorder, model).execute(callback));
|
|
|
|
var stopAllOfGroup = new MenuItem("Remove all");
|
|
stopAllOfGroup.setOnAction(e -> new StopGroupAction(source, recorder, model).execute(callback));
|
|
|
|
menu.getItems().addAll(editGroup, resumeAllOfGroup, pauseAllOfGroup, stopAllOfGroup);
|
|
return menu;
|
|
}
|
|
}
|