IN PROGRESS
The Tacository offers a variety of abstract modular frameworks that together form a fully-functional, dynamic, modular application.
The Tacository is a modular JavaFX framework designed to work with internal logic modules.
At the most basic level, the Tacository Framework uses a
ContentManager
instance to help switch between any number ofContent
implementations.More detailed information can be found in Javadocs.
Foundational modules are components of the Tacository framework that apply to every
Content
implementation.
The
Sidebar
is the collapsable area located to the far-right of the application window.
The
Sidebar
comprises aList
ofUIBookshelf
objects.
- Each
UIBookshelf
instance comprises an additionalList
ofUIBook
objects.
The
Sidebar
contains 2 scopes ofUIBookshelf
: Application Scope and Content Scope.
- Application Scope:
UIBookshelves
that apply to every type of Content and are always available and visible, regardless of the activeContent
.- Content Scope:
UIBookshelves
that apply only to a specific type of Content and are only available and visible when the owningContent
is active.
The
SidebarBookshelf
implementation ofUIBookshelf
offers additional features specifically designed to work with theSidebar
root.
The
UIBookshelf
defines the contents of eachSidebar
group tab, comprised ofUIBook
objects.
The
UIBook
defines the contents of each sub-tab of aUIBookshelf
instance.
Each
UIBook
is defined by one or moreUIPage
instances.The
Sidebar
framework allows aUIBook
to turn to any number of pages, with a framework-integrated back button appearing upon a page turn, permitting the user to turn back to the previous page.
The
LogiCore
is a singleton Spring-managed object that handles the task execution and logic for the Tacository application.
The
Tickable
interface provides the backbone of logic execution.
TheTickable
interface offers one abstract method,taskManager()
.The
taskManager()
method supplies aTaskManager
instance that handles the logic of theTickable
implementation.
See
TaskManager
documentation for details and additional information.
The
TaskManager
class handles the logic execution for aTickable
object.The
TaskManager
is powered primarily byGameTask
objects.
See
TaskManager
documentation for details and additional information.
The
GFXObject
implementation ofTickable
offers several additional abstract methods for handlingJavaFX Operations
.
GameTask
offers a variety of abstract members for creating any type of task to be executed by aTaskManager
.
See
TaskManager
documentation for details and additional information.
The JSON Frameworks offers streamlined JSON saving and loading support.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
The
JElement
interface defines implementing objects as being a JSON component.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
The
JObject
extension ofJElement
offers support for converting any implementing class to aJsonObject
.
JObject
is, in essence, the backbone of saving aJElement
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
The
JLoadable
interface is the backbone for loading aJLoadable
implementation from a previously-saved JSON file.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
The
JLoadableObject
extension ofJLoadable
is very similar to the standardJLoadable
interface.
However, unlikeJLoadable
,JLoadableObject
automatically processes theJID
as a JSON element.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
JUtil
provides backbone, convenient factory and utility methods for working with JSON Files.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
JFiles
provides backbone, convenient methods for working directly with JSON files.In essence,
JFiles
contains methods for using the JSON Framework components as outlined above.
See
JElement
,JLoadable
, andJLoadableObject
documentation for details and additional information.
The
Content
is the backbone of the Tacository framework, defining the specifics of a Tacository application.
The Tacository framework depends on
JavaFX
,Spring
, andFxWeaver
libraries.
The
ListView Framework
defines a variety of classes that together help define the function, behavior, and appearance of aListView
orTreeView
component.
The
IndexedCellFXable
interface provides the backbone for bothListCellFX
andTreeCellFX
.
ListCellFX
is an extension ofListCell
that is designed to work with theListView Framework
.To use a
ListCellFX
, simply pass theListCellFX
as aFunction
to thelistViewInstance.setCellFactory(listCellFxFunction);
.New
ListCellFX
instances are often constructed as in-line anonymous classes.
public class AttributePageController {
//...//
@Override
public void initialize() {
attributeListView.setCellFactory(listView -> new ListCellFX<>( //Define a Function that returns a new ListCellFX instance.
listCellFX -> new CellControlManager<>( //Define the CellControlManager factory Function passed to the ListCellFX constructor.
listCellFX, //Pass the resulting ListCellFX instance to the CellControlManager constructor.
cellData -> Stuff.get( //Define the CellController implementation, often constructed directly from the Springable.weaver() function.
cellData, //Pass the CellData Function input value as the Lookup Key parameter for the Stuff.get(...) static util accessor method.
() -> weaver().loadController(AttributeElementController.class), //Define the CellController factory Function, typically a Spring-Managed, FxWeaver-Managed, prototype Spring Component.
listView.hashCode())))); // Pass the ListView hash code as a Stuff.get(...) optional params input.
//...//
}
//...//
}
TreeCellFX
is an extension ofTreeCell
that is designed to work with theListView Framework
.
TreeCellFX
is identical toListCellFX
exceptTreeCellFX
manages aTreeCell
member of aTreeView
whereasListCellFX
manages aListCell
member of aListView
.However, due to the hierarchical nature of a
TreeView
, theListView Framework
offers additional control overTreeView
functionality.
The
TreeLoader
is used to provide in-depth control over the hierarchical components of aTreeView
.
WrappingTreeLoader
offers a non-abstract extension ofTreeLoader
.Unlike
TreeLoader
,WrappingTreeLoader
provides a defaultTreeLoader.createTreeCellData(...)
implementation that automatically constructs a newWrappingTreeCell
instance based on the input parameters.
The
TreeCellData
class represents aTreeView
element.To define a
TreeCellData
instance, override the abstractTreeCellData.createWrappedInstance(...)
method.
WrappingTreeCellData
offers a non-abstract extension ofTreeCellData
.
WrappingTreeCellData
is designed to work seamlessly with aWrappingTreeLoader
object.
The
CellControlManager
functions as the backbone of theListView Framework
.The
CellControlManager
is passed to aTreeCellFX
orListCellFX
constructor as aFactory Function
.
See
CellControlManager
documentation for details and additional information.
graph LR
FXA[Spring FXApplication]
FXWI[FXWeaverInitializer]
AC[AppController]
FXA -- FxWeaver --> FXWI
FXWI -- Controller Initialization --> AC
graph TB
SC(Spring Components)
AUI[AppUI]
LC[LogiCore]
DB[Debugger]
PR[Printer]
SC --> AUI
SC --> LC
SC --> DB
SC --> PR
graph TB
LC[LogiCore]
GL(Game Loop)
TEM[TriggerEventManager]
TEX(Tickable Execution)
GFXE(GFXObject Execution)
TE(Task Execution)
LC --> GL
LC --> TEM
LC --> TEX
TEX --> GFXE
LC --> TE
graph TB
AUI[AppUI]
SB[Sidebar]
AC[AppController]
CM[ContentManager]
IH(Input Handling)
SBI(Sidebar Initialization)
C[Content]
CD[ContentData]
CC[ContentController]
CCTM[TaskManager]
CB[Content Bookshelves]
IHI(Input Handling Implementation)
OH[OverlayHandler]
UIBS[UIBookshelf]
UIBK[UIBook]
UIPG[UIPage]
UIPH[UIPageHandler]
SBBS[SidebarBookshelf]
AUI --> SB
AUI --> AC
AUI --> IH
AUI --> CM
AC --> SBI
SB --> UIBS
UIBS --> SBBS
UIBS --> UIBK
UIBK --> UIPG
UIPG --> UIPH
CM --> C
C --> CD
C ---> CC
C --> CB
C ---> IHI
C --> OH
CC --> CCTM