Skip to content
Snippets Groups Projects

Added feedback label in Search scene

Merged Rokas Bliudzius requested to merge feat/photos-feedback-label into dev
All threads resolved!
1 file
+ 32
1
Compare changes
  • Side-by-side
  • Inline
@@ -4,9 +4,12 @@ import Components.ActionPopup;
import Components.PhotoContainer;
import Components.UserInfo;
import Css.Css;
import Css.FeedBackType;
import Database.Hibernate;
import Database.HibernateClasses.Album;
import Database.HibernateClasses.Photo;
import java.util.concurrent.atomic.AtomicBoolean;
import javafx.animation.FadeTransition;
import javafx.geometry.HPos;
import javafx.geometry.Pos;
import javafx.scene.control.*;
@@ -17,6 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import javafx.stage.Screen;
import javafx.util.Duration;
/**
* Class for the Search scene
@@ -33,6 +37,7 @@ public class Search extends SceneBuilder {
private Button addToAlbumButton = new Button("Add to album");
ChoiceBox<String> choiceBox = new ChoiceBox<>();
private Button deleteButton = new Button("Delete selected photos");
private Label feedbackLabel = new Label();
/**
@@ -58,6 +63,8 @@ public class Search extends SceneBuilder {
setupDeleteButton();
super.getGridPane().add(scrollPane,0,1, 3, 1);
super.getGridPane().add(searchTextField, 0, 0, 2, 1);
super.getGridPane().add(feedbackLabel, 2, 0, 1, 1);
super.getGridPane().setHalignment(feedbackLabel, HPos.LEFT);
super.getGridPane().add(selectAllHBox, 2, 0, 1, 1);
super.getGridPane().setHalignment(selectAllHBox, HPos.RIGHT);
super.getGridPane().getStylesheets().add("file:src/main/App/Css/SelectAllCheckBoxStyle.css");
@@ -209,6 +216,12 @@ public class Search extends SceneBuilder {
int index = indexOfAlbum(albumName);
ArrayList<Photo> checkedPhoto = getCheckedPhotos();
checkedPhoto.forEach(s -> UserInfo.getUser().getAlbums().get(index).getAlbumPhotos().add(s));
//An exception is thrown here if no album is chosen when clicking "Add" button!
if(checkedPhoto.isEmpty()){
playFeedbackLabelTransition("Unsuccessful: No photos were chosen.", FeedBackType.Error);
} else {
playFeedbackLabelTransition("Added to " + albumName, FeedBackType.Successful);
}
Hibernate.updateUser(UserInfo.getUser());
}
@@ -217,12 +230,30 @@ public class Search extends SceneBuilder {
*/
private void deleteSelectedPhotos(){
ArrayList<Photo> selectedPhotos = getCheckedPhotos();
AtomicBoolean bool = new AtomicBoolean(false);
selectedPhotos.forEach(photo -> {
UserInfo.getUser().getPhotos().remove(photo);
bool.set(UserInfo.getUser().getPhotos().remove(photo));
PhotoContainer photoContainer = photoContainerList.stream().filter(c -> c.getPhoto().equals(photo)).findAny().get();
photoContainer.getCheckBox().setSelected(false);
scrollPaneVBox.getChildren().remove(photoContainer.getPhotoContainer());
});
Hibernate.updateUser(UserInfo.getUser());
if(bool.get()){
playFeedbackLabelTransition("Deleted successfully", FeedBackType.Successful);
}
}
/**
* Method for displaying feedback label.
* @param labelText String which is displayed in the label
*/
private void playFeedbackLabelTransition(String labelText, FeedBackType feedBackType){
Css.setFeedBackLabel(feedBackType, 13, feedbackLabel);
feedbackLabel.setText(labelText);
FadeTransition ft = new FadeTransition(Duration.seconds(5), feedbackLabel);
ft.setFromValue(1);
ft.setToValue(0);
ft.play();
}
}
Loading