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
ContentManagerinstance to help switch between any number ofContentimplementations.More detailed information can be found in Javadocs.
Foundational modules are components of the Tacository framework that apply to every
Contentimplementation.
The
Sidebaris the collapsable area located to the far-right of the application window.
The
Sidebarcomprises aListofUIBookshelfobjects.
- Each
UIBookshelfinstance comprises an additionalListofUIBookobjects.
The
Sidebarcontains 2 scopes ofUIBookshelf: Application Scope and Content Scope.
- Application Scope:
UIBookshelvesthat apply to every type of Content and are always available and visible, regardless of the activeContent.- Content Scope:
UIBookshelvesthat apply only to a specific type of Content and are only available and visible when the owningContentis active.
The
SidebarBookshelfimplementation ofUIBookshelfoffers additional features specifically designed to work with theSidebarroot.
The
UIBookshelfdefines the contents of eachSidebargroup tab, comprised ofUIBookobjects.
The
UIBookdefines the contents of each sub-tab of aUIBookshelfinstance.
Each
UIBookis defined by one or moreUIPageinstances.The
Sidebarframework allows aUIBookto 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
LogiCoreis a singleton Spring-managed object that handles the task execution and logic for the Tacository application.
The
Tickableinterface provides the backbone of logic execution.
TheTickableinterface offers one abstract method,taskManager().The
taskManager()method supplies aTaskManagerinstance that handles the logic of theTickableimplementation.
See
TaskManagerdocumentation for details and additional information.
The
TaskManagerclass handles the logic execution for aTickableobject.The
TaskManageris powered primarily byGameTaskobjects.
See
TaskManagerdocumentation for details and additional information.
The
GFXObjectimplementation ofTickableoffers several additional abstract methods for handlingJavaFX Operations.
GameTaskoffers a variety of abstract members for creating any type of task to be executed by aTaskManager.
See
TaskManagerdocumentation for details and additional information.
The JSON Frameworks offers streamlined JSON saving and loading support.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
The
JElementinterface defines implementing objects as being a JSON component.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
The
JObjectextension ofJElementoffers support for converting any implementing class to aJsonObject.
JObjectis, in essence, the backbone of saving aJElement
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
The
JLoadableinterface is the backbone for loading aJLoadableimplementation from a previously-saved JSON file.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
The
JLoadableObjectextension ofJLoadableis very similar to the standardJLoadableinterface.
However, unlikeJLoadable,JLoadableObjectautomatically processes theJIDas a JSON element.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
JUtilprovides backbone, convenient factory and utility methods for working with JSON Files.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
JFilesprovides backbone, convenient methods for working directly with JSON files.In essence,
JFilescontains methods for using the JSON Framework components as outlined above.
See
JElement,JLoadable, andJLoadableObjectdocumentation for details and additional information.
The
Contentis the backbone of the Tacository framework, defining the specifics of a Tacository application.
The Tacository framework depends on
JavaFX,Spring, andFxWeaverlibraries.
The
ListView Frameworkdefines a variety of classes that together help define the function, behavior, and appearance of aListVieworTreeViewcomponent.
The
IndexedCellFXableinterface provides the backbone for bothListCellFXandTreeCellFX.
ListCellFXis an extension ofListCellthat is designed to work with theListView Framework.To use a
ListCellFX, simply pass theListCellFXas aFunctionto thelistViewInstance.setCellFactory(listCellFxFunction);.New
ListCellFXinstances 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.
//...//
}
//...//
}
TreeCellFXis an extension ofTreeCellthat is designed to work with theListView Framework.
TreeCellFXis identical toListCellFXexceptTreeCellFXmanages aTreeCellmember of aTreeViewwhereasListCellFXmanages aListCellmember of aListView.However, due to the hierarchical nature of a
TreeView, theListView Frameworkoffers additional control overTreeViewfunctionality.
The
TreeLoaderis used to provide in-depth control over the hierarchical components of aTreeView.
WrappingTreeLoaderoffers a non-abstract extension ofTreeLoader.Unlike
TreeLoader,WrappingTreeLoaderprovides a defaultTreeLoader.createTreeCellData(...)implementation that automatically constructs a newWrappingTreeCellinstance based on the input parameters.
The
TreeCellDataclass represents aTreeViewelement.To define a
TreeCellDatainstance, override the abstractTreeCellData.createWrappedInstance(...)method.
WrappingTreeCellDataoffers a non-abstract extension ofTreeCellData.
WrappingTreeCellDatais designed to work seamlessly with aWrappingTreeLoaderobject.
The
CellControlManagerfunctions as the backbone of theListView Framework.The
CellControlManageris passed to aTreeCellFXorListCellFXconstructor as aFactory Function.
See
CellControlManagerdocumentation 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