JavaFX is Eye Candy and I Have a Sweet Tooth. (Another Extreme UI Makeover)
In a previous article I showed a redesigned user interface for our Freight Management System (FMS) application using JavaFX as we begin to migrate away from Swing. We are continuing to design screens for new functionality in FMS, and in this article I will illustrate a makeover I implemented for this new screen using JavaFX, which we had originally had planned to use Swing when the UI was first designed.
The screenshot below shows the original wireframe mock-up of what will be the new “VFC Recovery” screen within our Inbound Planning module of the FMS application. This module will be used by our warehouse planning personel to display all “Trips” that will be arriving at their terminal. A trip could be an incoming truck, ship, rail, or flight which has freight destined for the terminal. On this screen, inbound planners in our warehouses will have the ability to see these incoming trips by arrival date and time. This is the first layer of nested tables on this tab. The next layer of tables below the arrival date, is reserved for each trip. ie in the example below “TOTE*11027” is a ship which is scheduled to arrive on 07-18-12 08:00. Expanding the trip table, will show the next level of tables, which are the plans for the freight once it arrives at the terminal. Expanding this table then would show all the shipping containers (called VFCs) that the inbound planners have assigned to their plans, and finally, the VFC rows in this table can be expanded one last time to display all the shipments within the specified container. As can be seen, the amount of data displayed to the user can get overwhelming pretty quickly.
The first step in a makeover of the VFC Recovery screen was to try to separate the data in a way that was intuitive for the users to navigate while also giving them the information they need to make their planning decisions. Below is a picture of what was designed during a whiteboard session. The inbound trips to the Lynden Transport terminal (Anchorage in this case), would be displayed in a table in the top portion of the screen. The table would contain a summary of information related to the incoming trip, such as the mode of travel (ie truck, rail, barge, etc), as well as the origin of the trip, and anticipated date/time of the arrival. The user could select a trip in this table, and the details of the trip would be displayed in a section below the table. The details section would contain additional information about the trip, as well as contain an “Accordion” component which would have a separate section for each Plan that the inbound planners would be putting together. The user could then expand one of these sections to view details on all of the containers that had been assigned to a particular plan.
Results of UI design whiteboard session
Once again I used the JavaFX design tool, Scene Builder to construct the new user interface. In addition, I wanted to make use of the open source JavaFX components that are part of the JFXtras project, which are located here. Components that are in the JFXtras project unfortunately can’t be added to the component palette in Scene Builder, but it was still easy enough to manually add them to the FXML code that Scene Builder generates, at which point Scene Builder will display them in the application’s UI as if they had been part of the component palette. (Exactly how I accomplished this could be a future blog post.)
Below is a screenshot of the new UI for the VFC Recovery tab. I took a bit of inspiration from what I had seen at Grand Central Station in New York, with my goal to make the trip arrivals portion of the UI look something like what you may see in an airport or train station. Two components in the JFXtras library were perfect for this task. I used the DotMatrixSegment component to create the arrival board’s column headers as well as display the terminal where the trips were arriving at, in this case Anchorage. I then used the Splitflap component to display the actual summary data about the trip, including arrival date/time, the trip ID, the origin and also the mode. I found a nice brushed metal background, and used inner and drop shadows to give the board a sense of depth. In the screen shot below, the trip that the user had selected is highlighted by giving the row a green background.
The details section below the arrival board is formatted in a similar fashion to the table found in the previous article’s JavaFX makeover. I used CSS to create the gradients, rounded corners, borders, background, etc for the section header, accordion component, and data table.
As mentioned in my previous article, this screen will still reside as a TopComponent within a NetBeans RCP application which will manage our other freight management modules that we will be designing with JavaFX as the UI toolkit.