FFM-Friend_Face_Matching/src/main/java/dev/mateuszkowalczyk/ffm/view/workspace/MainPageController.java

82 lines
2.9 KiB
Java

package dev.mateuszkowalczyk.ffm.view.workspace;
import dev.mateuszkowalczyk.ffm.app.WorkspaceService;
import dev.mateuszkowalczyk.ffm.data.database.person.Person;
import dev.mateuszkowalczyk.ffm.utils.ResourceLoader;
import dev.mateuszkowalczyk.ffm.view.workspace.elements.ElementsEnum;
import dev.mateuszkowalczyk.ffm.view.workspace.elements.FaceContainerController;
import dev.mateuszkowalczyk.ffm.view.workspace.elements.ImageContainerController;
import dev.mateuszkowalczyk.ffm.view.workspace.elements.PeopleContainerController;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.ScrollPane;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
public class MainPageController implements Initializable {
private WorkspaceService workspaceService;
@FXML
private ScrollPane mainContainer;
private Person selectedPerson;
private Person person;
public MainPageController() {
this.workspaceService = WorkspaceService.getInstance();
this.workspaceService.setMainPageController(this);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
this.setElement(ElementsEnum.ImagesContainer);
}
public void setElement(ElementsEnum element) {
try {
Object controller = null;
FXMLLoader fxmlLoader = new FXMLLoader();
switch (element) {
case ImagesContainerForPerson:
controller = new ImageContainerController(this, this.person);
break;
case ImagesContainer:
controller = new ImageContainerController(this);
break;
case PeopleContainer:
controller = new PeopleContainerController(this);
break;
case PersonFaceContainer:
controller = new FaceContainerController(this, this.selectedPerson);
}
fxmlLoader.setLocation(ResourceLoader.getInstance().getResource(element.getPath()));
fxmlLoader.setController(controller);
this.mainContainer.setContent(fxmlLoader.load());
} catch (IOException e) {
e.printStackTrace();
}
}
public void openImageContainer(ActionEvent actionEvent) {
this.setElement(ElementsEnum.ImagesContainer);
}
public void openPeopleModule(ActionEvent actionEvent) {
this.setElement(ElementsEnum.PeopleContainer);
}
public void openFacesSelectedPerson(Person person) {
this.selectedPerson = person;
this.setElement(ElementsEnum.PersonFaceContainer);
}
public void showPhotosForPerson(Person person) {
this.person = person;
this.setElement(ElementsEnum.ImagesContainerForPerson);
}
}