A JavaFX application framework based on JacpFX (Java Asynchronous Client Platform) made initially to create accelerator physics applications based on Open XAL, an open source development environment used for creating accelerator physics applications, scripts and services.
The framework will allow applications having a generic layout with the following components:
-
A toolbar in the top area, with 3 groups of buttons:
- On the left, the buttons controlling the display of the left and bottom views;
- On the right, the button controlling the display of the right view;
- On the center, application specific buttons.
If the application will not use outer views, the corresponding buttons will not be displayed. Moreover, if no application specific buttons are added, the whole toolbar will not be displayed.
-
A status bar in the bottom area, where status message and other informations are displayed. The status bar can be omitted it the application doesn't need it.
-
Peripheral views (
browser
,navigator/overview
,console/messages
,palette
, andinspector/properties
), where the application can register content to be displayed. If some of the views are not used then will not be displayed. When displayed, the splitters will allow to resize them. -
The
main
view area used by the application to display its main content.
The complete application is made of 6 view areas, where the main
one is always visible.
A view areas is visible only if at least one view is registered. The only exception is
the main
area, where views can be added dynamically, and no initial view is required.
The browser
view should be used to navigate high-level structures in order to
find elements to be opened in dedicated views inside the main
area.
This view area should be used to navigate the content of selected
entities, or display an overview of a more detailed zone displayed in
the currently visible main
view.
The console
view should be used to display messages from the application to the users,
mirroring, for example, the standard System.out and System.err streams.
The palette
view area is where to display a set of (draggable or selectable)
elements frequently used by the user.
This area should be used to display details of the element selected in the
currently visible main
view. Usually a table of name/value pairs is used to
list the properties of the selected element, but other visualizations are
possible too.
The main
view area will contains one or more views (not necessarily "document-based")
showing the data the use will act upon. The views in the main
area can be opened
from user's interaction in the browser
and/or the navigation
area, or
programmatically.
Inside the main
and console
view areas, views are displayed in a tab container.
In the remaining view areas, the alternative between tab container or accordion can
be chosen.
The ServiceProvider annotation will simplify providing service implementations,
taking care of publishing them in the proper file inside the META-INF/service
folder.
package my.module;
import my.module.spi.SomeService;
import se.europeanspallationsource.framework.annotation.ServiceProvider;
@ServiceProvider(service=SomeService.class)
public class MyService implements SomeService {
...
}
Moreover, the ServiceLoaderUtilities class will complement the
java.util.ServiceLoader
one with few more methods.
<dependency>
<groupId>se.europeanspallationsource</groupId>
<artifactId>xaos</artifactId>
<version>0.1.0</version>
<scope>compile</scope>
</dependency>