Question: Your goal is to implement a GUI application in Java using JavaFX 8 that displays a gallery of images based on the results of a

Your goal is to implement a GUI application in Java using JavaFX 8 that displays a gallery of images based on the results of a search query to the iTunes Search API. This will require you to lookup things in Javadoc and apply your knowledge of things like inheritance, polymorphism, and interfaces. The functional and non-functional requirements for this project are outlined later in this document. Here is an example of what your program might look like:

Here are links to an animated version: gifv, gif.

Part of software development is being given a goal but not necessarily being given instruction on all of the details needed to accomplish that goal. For example, even though working with things like images, threads, JSON, and the iTunes Search API haven't been covered in class, you are going to need to lookup how to do these things in order to complete this project. Starter code and a generously helpful FAQ are provided.

This project is also designed to help you better understand the usefulness of good class design. While you can technically write your entire JavaFX-based GUI application entirely in the start method, this will make your code messy, hard to read, possibly redundant, and likely more prone to errors. Before you write any code, you should plan out your application's scene graph (i.e., the containment hierarchy), and design custom components as needed. If you find that you are writing a lot of code related to a specific component (e.g., setting styling, adding event handlers, etc.), then it's probably a good idea to make a custom version of that component in order to reduce clutter.

Learning Outcomes

Plan, design, implement, test, debug, and deploy a complete object-oriented software solution in Linux/Unix environment (1302-LO1)

Utilitze inheritance and polymorphism in a software project (1302-LO3-LO4).

Develop a GUI for a software project (1302-LO7).

Implement exception-handling in a software project (1302-LO8).

Understand and apply langauge basics using an OOP language (1302-LO11).

Functional Requirements

Main Requirements (100 points): Your application needs to have the components listed below. They need to function as described. If a certain aspect of a component (e.g., style or behavior) is not specified in these requirements, then that aspect is at the discretion of the implementor. The screenshot provided earlier in this project description is meant to serve as a reference. It is okay if implementors deviate visually from screenshot. In addition to the required components, implementors should feel free to add more components and/or functionality as long they do not distract too heavily from the functionality of the required components. Here are the required components:

Menu (10 points): The application needs to have a menu bar with a "File" menu. The only menu item that is required is one labeled "Exit" that exits your application gracefully when clicked by the user.

Main Content (30 points): The main content of the application is a collection of twenty (20) images gathered via querying the iTunes Search API. The initial set of images should correspond to some default query. If the application is in "play mode", then every two (2) seconds, a random image that is currently being displayed should be replaced with a random image that is not currently being displayed (assuming more than 20 images are gathered from the response to the search query).

Toolbar (50 points): The application needs to have a toolbar that contains the following components:

Play/Pause Button (10 points): This button should allow the user to pause and resume the random image replacement described for the main content of the application. The button text should change, as needed, to reflect the current application mode (i.e., play vs. pause).

Query Text Field (10 points): This component should allow the user to enter in a search query for the iTunes Search API. Its initial contents should correspond to some default query.

Update Images Button (30 points): This button should cause the application to execute the search query specified in the query text field, gather the images associated with the query response, and update the images in the main content area of the application accordingly. If less than twenty (20) images are gathered, then a dialog should be displayed to the user with an appropriate error message, and the main content area should not be updated. If twenty (20) or more images are gathered, then the images not chosen for display in the main content area of the application should be remembered in order to facilitate the random replacement described for the main content of the application.

Progress Bar (10 points): The application needs to have a progress bar that indicates the progress of querying the iTunes Search API, loading the images into memory, and updating the main content area of the application. Notably, the progress bar will be seen to progress when the application first starts (as images are gathered from the response to the default query) and when the "Update Images" button is pressed. Please note that this progress bar is not merely aesthetic. It should actually show the progress of gathering individual images from the query response.

Gallery! File Pause Search Query: rock Update Images dcher NO MORE ROCKO train 3 0008S DOWN Images provided courtesy of iTunes Gallery! File Pause Search Query: rock Update Images dcher NO MORE ROCKO train 3 0008S DOWN Images provided courtesy of iTunes

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!