Skip to content

Commit

Permalink
feat: created BrowsePage and a component for cards representing an or…
Browse files Browse the repository at this point in the history
…ganization
  • Loading branch information
emilfa committed Mar 12, 2026
1 parent 8ee932d commit 93e8a65
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 10 deletions.
25 changes: 16 additions & 9 deletions src/main/java/edu/group5/app/view/browsepage/BrowseCard.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package edu.group5.app.view.browsepage;

import edu.group5.app.control.BrowseOrgController;
import edu.group5.app.control.BrowseCardController;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;

public class BrowseOrg extends VBox {
private final BrowseOrgController controller;
public class BrowseCard extends VBox {
private final BrowseCardController controller;

public BrowseOrg(BrowseOrgController browseOrgController, String img, String name) {
this.controller = browseOrgController;
public BrowseCard(BrowseCardController browseCardController, String img, String name) {
this.controller = browseCardController;
setId("mainContainer");
getStylesheets().add(getClass().getResource("/browsepage/browse_org.css").toExternalForm());

Expand All @@ -22,20 +22,26 @@ public BrowseOrg(BrowseOrgController browseOrgController, String img, String nam
checkMarkContainer()
);

setPrefWidth(100);
setFillWidth(true);
setAlignment(Pos.CENTER);
}

private StackPane imageContainer(String img) {
StackPane imageContainer = new StackPane();
imageContainer.setId("imageContainer");
imageContainer.setPrefHeight(120);
imageContainer.setPrefWidth(120);
imageContainer.setMaxWidth(Double.MAX_VALUE);

ImageView logo = new ImageView(
new Image(getClass().getResource(img).toExternalForm())
);

logo.setId("logo");
logo.setSmooth(true);
logo.setPreserveRatio(true);
logo.setFitWidth(100);
logo.setFitHeight(150);

imageContainer.getChildren().add(logo);
return imageContainer;
}
Expand All @@ -49,14 +55,15 @@ private Text orgName(String text) {
private StackPane checkMarkContainer() {
StackPane checkMarkContainer = new StackPane();
checkMarkContainer.setId("checkMarkContainer");
checkMarkContainer.setAlignment(Pos.CENTER_LEFT);

ImageView verifiedCheck = new ImageView(
new Image(getClass().getResource("/verified_check.png").toExternalForm())
);

verifiedCheck.setPreserveRatio(true);
verifiedCheck.setSmooth(true);


checkMarkContainer.setAlignment(Pos.CENTER_LEFT);
checkMarkContainer.getChildren().add(verifiedCheck);
return checkMarkContainer;
}
Expand Down
77 changes: 76 additions & 1 deletion src/main/java/edu/group5/app/view/browsepage/BrowsePageView.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,79 @@
package edu.group5.app.view.browsepage;

public class BrowsePageView {
import edu.group5.app.control.BrowseCardController;
import edu.group5.app.control.BrowsePageController;
import edu.group5.app.control.HeaderController;
import edu.group5.app.view.Header;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;

public class BrowsePageView extends BorderPane {
private final Scene scene;
private final BrowsePageController controller;
private final BrowseCardController orgController;

public BrowsePageView(Scene mainScene, BrowsePageController browsePageController, BrowseCardController browseCardController, HeaderController headerController) {
this.scene = mainScene;
this.controller = browsePageController;
this.orgController = browseCardController;
getStylesheets().add(getClass().getResource("/browsepage/browsepage.css").toExternalForm());
Header headerView = new Header(headerController);
setTop(headerView);
setCenter(createBody());
}

private ScrollPane createBody() {
ScrollPane body = new ScrollPane();
body.setId("body");
body.setFitToWidth(true);
VBox vBox = new VBox();
vBox.setSpacing(10);
vBox.getChildren().addAll(
createSearchSection(),
createOrganizationSection()
);
body.setContent(vBox);
return body;
}

private HBox createSearchSection() {
HBox searchSection = new HBox();
TextField searchField = new TextField();
searchField.setPromptText("Search..");
searchSection.getChildren().add(searchField);
return searchSection;
}

private GridPane createOrganizationSection() {
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);

int column = 0;
int row = 0;
for (int i = 0; i < 8; i++) {
BrowseCard card = new BrowseCard(orgController, "/browsepage/images/children_of_shambala.png", "Shambala Foundation");

card.setMaxWidth(Double.MAX_VALUE);
GridPane.setHgrow(card, Priority.ALWAYS);
GridPane.setFillWidth(card, true);
grid.add(card, column, row);

column++;

if (column == 4) {
column = 0;
row++;
}
}

for (int i = 0; i < 4; i++) {
ColumnConstraints col = new ColumnConstraints();
col.setPercentWidth(25);
grid.getColumnConstraints().add(col);
}
return grid;
}
}

0 comments on commit 93e8a65

Please sign in to comment.