Skip to content

Commit b6e8565

Browse files
committed
Update project organization
1 parent deff0d6 commit b6e8565

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+121
-120
lines changed

README.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
# Techsenger MVVM4FX
1+
# Techsenger PatternFX
22

3-
Techsenger MVVM4FX is a compact, practical framework for building JavaFX applications with the MVVM pattern.
4-
It provides practical solutions to the most challenging problems of MVVM, including dynamic component composition,
5-
lifecycle management, and component state ownership. The framework supplies all necessary interfaces and base class
6-
implementations for creating components, which serve as the fundamental units of the MVVM pattern. Examples of
7-
components include tabs, dialog windows, toolbars, image viewers, help pages, and more.
3+
Techsenger PatternFX is a compact, practical, component-oriented framework for building JavaFX applications using an
4+
extended MVVM pattern. It provides a complete architectural solution that addresses the limitations of classical
5+
MVVM while preserving its core strengths. With PatternFX, you can easily solve the most challenging MVVM problems,
6+
including dynamic component composition, lifecycle management, and component state ownership. The framework supplies
7+
all the necessary interfaces and base class implementations for creating components. Examples of such components
8+
include tabs, dialog windows, toolbars, image viewers, help pages, and more.
89

910
As a real example of using this framework, see [TabShell](https://github.com/techsenger/tabshell) project.
1011

@@ -33,7 +34,7 @@ As a real example of using this framework, see [TabShell](https://github.com/tec
3334

3435
## Overview <a name="overview"></a>
3536

36-
MVVM4FX reimagines the Model–View–ViewModel pattern as a component-based framework designed around clarity, modularity,
37+
PatternFX reimagines the Model–View–ViewModel pattern as a component-based framework designed around clarity, modularity,
3738
and the KISS principle for building complex, dynamic JavaFX applications. It addresses the most fundamental limitation
3839
of classical MVVM — dynamic component composition and lifecycle management — by introducing an explicit, imperative
3940
component layer responsible for the creation, ownership, and lifetime of components. Each `Component` exists as a
@@ -48,11 +49,11 @@ components;
4849
- `ComponentMediator` provides a controlled interaction channel between the `ComponentViewModel` and the `Component`;
4950
- `ComponentHistory` preserves continuity across sessions.
5051

51-
At its core, MVVM4FX follows the KISS principle – every class, method, and abstraction exists only for a clear reason,
52+
At its core, PatternFX follows the KISS principle – every class, method, and abstraction exists only for a clear reason,
5253
avoiding unnecessary complexity or dependencies. This simplicity is deliberate: it keeps the architecture transparent,
5354
predictable, and easy to extend.
5455

55-
By combining conceptual clarity with structural discipline, MVVM4FX achieves both architectural purity and practical
56+
By combining conceptual clarity with structural discipline, PatternFX achieves both architectural purity and practical
5657
flexibility — a balance where components remain independent yet fully interoperable. It is not a minimalistic
5758
abstraction but a complete design system for building coherent, maintainable, and intelligent JavaFX applications.
5859

@@ -251,7 +252,7 @@ A component has five distinct states (see `ComponentState`):
251252

252253
### Component Tree <a name="component-tree"></a>
253254

254-
Components in MVVM4FX form a hierarchical structure, called the component tree that can change dynamically. This tree
255+
Components in PatternFX form a hierarchical structure, called the component tree that can change dynamically. This tree
255256
represents the logical composition of the application and is independent of the JavaFX node tree, which is
256257
responsible only for rendering.
257258

@@ -283,7 +284,7 @@ clarity, testability, and long-term maintainability.
283284
There are two main approaches to managing UI components: declarative and imperative. Each has its own strengths and
284285
weaknesses.
285286

286-
MVVM4FX adopts the imperative approach. In this approach, components are explicitly created, initialized, added to
287+
PatternFX adopts the imperative approach. In this approach, components are explicitly created, initialized, added to
287288
the component tree, and deinitialized by the developer. This choice leads to the following characteristics:
288289

289290
Strengths:
@@ -300,7 +301,7 @@ tabs, dialogs, or search panels).
300301
- Higher initial learning curve for developers new to the framework.
301302
- Careful design discipline needed to prevent overly complex or "God" components.
302303

303-
This approach ensures that MVVM4FX components behave predictably, remain testable, and can support complex,
304+
This approach ensures that PatternFX components behave predictably, remain testable, and can support complex,
304305
long-living, dynamic UI applications.
305306

306307
### Component Code Example<a name="component-code"></a>
@@ -416,36 +417,36 @@ Java 11+ and JavaFX 19.
416417

417418
## Dependencies <a name="dependencies"></a>
418419

419-
This project is available on Maven Central:
420+
This project will be available on Maven Central in a few weeks:
420421

421422
```
422423
<dependency>
423-
<groupId>com.techsenger.mvvm4fx</groupId>
424-
<artifactId>mvvm4fx-core</artifactId>
425-
<version>${mvvm4fx.version}</version>
424+
<groupId>com.techsenger.patternfx</groupId>
425+
<artifactId>patternfx-core</artifactId>
426+
<version>${patternfx.version}</version>
426427
</dependency>
427428
```
428429

429430
## Code Building <a name="code-building"></a>
430431

431432
To build the library use standard Git and Maven commands:
432433

433-
git clone https://github.com/techsenger/mvvm4fx
434-
cd mvvm4fx
434+
git clone https://github.com/techsenger/patternfx
435+
cd patternfx
435436
mvn clean install
436437

437438
## Running Demo <a name="demo"></a>
438439

439440
To run the demo execute the following commands in the root of the project:
440441

441-
cd mvvm4fx-demo
442+
cd patternfx-demo
442443
mvn javafx:run
443444

444-
Please note, that debugger settings are in `mvvm4fx-demo/pom.xml` file.
445+
Please note, that debugger settings are in `patternfx-demo/pom.xml` file.
445446

446447
## License <a name="license"></a>
447448

448-
Techsenger MVVM4FX is licensed under the Apache License, Version 2.0.
449+
Techsenger PatternFX is licensed under the Apache License, Version 2.0.
449450

450451
## Contributing <a name="contributing"></a>
451452

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<parent>
5-
<groupId>com.techsenger.mvvm4fx</groupId>
6-
<artifactId>mvvm4fx</artifactId>
5+
<groupId>com.techsenger.patternfx</groupId>
6+
<artifactId>patternfx</artifactId>
77
<version>2.0.0-SNAPSHOT</version>
88
</parent>
99

10-
<groupId>com.techsenger.mvvm4fx</groupId>
11-
<artifactId>mvvm4fx-core</artifactId>
10+
<groupId>com.techsenger.patternfx</groupId>
11+
<artifactId>patternfx-core</artifactId>
1212
<packaging>jar</packaging>
13-
<name>MVVM4FX - Core</name>
13+
<name>PatternFX - Core</name>
1414
<description>Base classes for working with MVVM</description>
1515

1616
<dependencies>

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractBreadthFirstIterator.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractBreadthFirstIterator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
import java.util.LinkedList;
2020
import java.util.List;

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractChildComponent.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractChildComponent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
import javafx.beans.property.ReadOnlyObjectProperty;
2020
import javafx.beans.property.ReadOnlyObjectWrapper;

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractChildView.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractChildView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
/**
2020
*

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractChildViewModel.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractChildViewModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
/**
2020
*

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractComponent.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractComponent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
import java.util.UUID;
2020
import javafx.beans.property.ObjectProperty;

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractComponentView.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractComponentView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
/**
2020
*

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractComponentViewModel.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractComponentViewModel.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

19-
import static com.techsenger.mvvm4fx.core.HistoryPolicy.ALL;
20-
import static com.techsenger.mvvm4fx.core.HistoryPolicy.APPEARANCE;
21-
import static com.techsenger.mvvm4fx.core.HistoryPolicy.DATA;
22-
import static com.techsenger.mvvm4fx.core.HistoryPolicy.NONE;
19+
import static com.techsenger.patternfx.core.HistoryPolicy.ALL;
20+
import static com.techsenger.patternfx.core.HistoryPolicy.APPEARANCE;
21+
import static com.techsenger.patternfx.core.HistoryPolicy.DATA;
22+
import static com.techsenger.patternfx.core.HistoryPolicy.NONE;
2323
import org.slf4j.Logger;
2424
import org.slf4j.LoggerFactory;
2525

mvvm4fx-core/src/main/java/com/techsenger/mvvm4fx/core/AbstractDepthFirstIterator.java renamed to patternfx-core/src/main/java/com/techsenger/patternfx/core/AbstractDepthFirstIterator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.mvvm4fx.core;
17+
package com.techsenger.patternfx.core;
1818

1919
import java.util.List;
2020
import java.util.NoSuchElementException;

0 commit comments

Comments
 (0)