Skip to content

Commit 4dfd1aa

Browse files
Flossyclaude
andcommitted
feat: Complete DBase4_3DTheme documentation and tests
Added comprehensive documentation, tests, and integration for DBase4_3DTheme: Documentation: - Added useDBase4_3DTheme() convenience method to ThemeManager - Added complete DBase4_3DTheme section to THEMES.md - Includes historical context, color scheme, 3D features, usage examples Tests: - Created DBase4_3DThemeTest.java with 32 comprehensive unit tests - All tests passing (32/32) - Tests all Theme3D interface methods - Verifies authentic dBASE IV colors and 3D rendering Integration: - Added DBase4_3DTheme to ThemeCompatibilityIT.java - Added to ThemeSwitchingIT.java theme switching tests - Added to UIRenderingWithThemesIT.java rendering tests Fixes: - Fixed test expectation for DBase4Theme border characters (ASCII not Unicode) - Fixed ThemeManager method to call getInstance().setTheme() Related Issues: #230, #231, #232 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent d213790 commit 4dfd1aa

6 files changed

Lines changed: 504 additions & 4 deletions

File tree

THEMES.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,79 @@ The shift from black to blue backgrounds was part of a broader trend in late-198
379379
- Projects celebrating late-1980s/early-1990s database evolution
380380
- Software requiring a professional blue-background aesthetic
381381

382+
383+
## 3D Themes
384+
385+
### Borland 3D Theme
386+
387+
**Historical Context:** Building on the iconic Borland IDE color scheme, this theme adds authentic 3D visual effects inspired by Borland's Turbo Vision framework (1990-1995). Turbo Vision brought windowed interfaces with raised buttons, sunken input fields, and drop shadows to DOS applications.
388+
389+
**Color Scheme:**
390+
- Background: Yellow on blue (classic Borland desktop)
391+
- Menus: Cyan on blue (menu bar and buttons)
392+
- Focused: Black on cyan (inverted selection)
393+
- Input Fields: White on blue (sunken data entry)
394+
- Selection: Black on cyan (bright highlight)
395+
- Shadow: Black on black with A_BOLD (gray simulation)
396+
- Highlight: White on cyan (raised element top-left edges)
397+
- Lowlight: Black on cyan (recessed element bottom-right edges)
398+
399+
**3D Features:**
400+
- Drop shadows (1 column right, 1 row down)
401+
- Raised buttons and menus
402+
- Sunken input fields
403+
- Single-line borders for dialogs
404+
- Asymmetric border coloring
405+
406+
**Usage:**
407+
```java
408+
ThemeManager.useBorland3DTheme();
409+
410+
Dialog dialog = new Dialog("Turbo Pascal 7.0");
411+
dialog.set3DEnabled(true);
412+
dialog.setRenderingStyle(RenderingStyle.RAISED);
413+
```
414+
415+
**When to Use:** Developer tools, IDEs, authentic Turbo Vision recreation.
416+
417+
---
418+
419+
### dBASE IV 3D Theme
420+
421+
**Historical Context:** dBASE IV (1988-1993) revolutionized database software with the Control Center, a graphical menu system featuring 3D-style UI elements similar to Borland's Turbo Vision framework. After Borland acquired Ashton-Tate in 1991, the interface gained even more pronounced 3D effects.
422+
423+
**Color Scheme:**
424+
- Background: White on blue (Control Center desktop)
425+
- Menus: Yellow on blue (menu bar and buttons)
426+
- Focused: Blue on yellow (inverted selection)
427+
- Input Fields: Cyan on blue (sunken data entry)
428+
- Selection: Blue on white (browse mode highlights)
429+
- Shadow: Black on black with A_BOLD (gray simulation)
430+
- Highlight: White on cyan (raised element top-left edges)
431+
- Lowlight: Black on cyan (recessed element bottom-right edges)
432+
433+
**3D Features:**
434+
- Drop shadows (2 columns right, 1 row down)
435+
- Raised buttons and menus
436+
- Sunken input fields
437+
- Double-line borders for modal dialogs
438+
- Asymmetric border coloring
439+
440+
**Usage:**
441+
```java
442+
ThemeManager.useDBase4_3DTheme();
443+
444+
Dialog dialog = new Dialog("Database Configuration");
445+
dialog.set3DEnabled(true);
446+
dialog.setRenderingStyle(RenderingStyle.RAISED);
447+
```
448+
449+
**When to Use:** Professional database applications, business software, authentic dBASE IV recreation.
450+
451+
**Visual Comparison:** More businesslike than Borland3DTheme (white vs yellow background), reflecting database application heritage vs developer tool aesthetic.
452+
453+
---
454+
382455
---
383456

384457
## Usage Guide

src/main/java/org/flossware/curses/theme/ThemeManager.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,21 @@ public void useBorland3DTheme() {
208208
setTheme(new Borland3DTheme());
209209
}
210210

211+
/**
212+
* Sets the current theme to dBASE IV 3D theme.
213+
*
214+
* <p>This theme recreates the sophisticated windowed interface of dBASE IV
215+
* (1988-1993) with authentic 3D visual effects including drop shadows, raised
216+
* buttons, and sunken input fields. The Control Center's white on blue color
217+
* scheme with yellow menus creates a professional database application aesthetic.</p>
218+
*
219+
* @see DBase4_3DTheme
220+
* @see useDBase4Theme()
221+
*/
222+
public static void useDBase4_3DTheme() {
223+
getInstance().setTheme(new DBase4_3DTheme());
224+
}
225+
211226
/**
212227
* Switches to the Modern theme.
213228
*

src/test/java/org/flossware/curses/integration/ThemeCompatibilityIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ static Stream<Theme> allThemes() {
5454
new TRS80Theme(),
5555
new DOSTheme(),
5656
new DBase3Theme(),
57-
new DBase4Theme()
57+
new DBase4Theme(),
58+
new DBase4_3DTheme()
5859
);
5960
}
6061

src/test/java/org/flossware/curses/integration/ThemeSwitchingIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ class ThemeSwitchingIT extends IntegrationTestBase {
3838
new ThemeSupplier("TRS-80", TRS80Theme::new),
3939
new ThemeSupplier("DOS", DOSTheme::new),
4040
new ThemeSupplier("dBASE III", DBase3Theme::new),
41-
new ThemeSupplier("dBASE IV", DBase4Theme::new)
41+
new ThemeSupplier("dBASE IV", DBase4Theme::new),
42+
new ThemeSupplier("dBASE IV 3D", DBase4_3DTheme::new)
4243
);
4344

4445
/**

src/test/java/org/flossware/curses/integration/UIRenderingWithThemesIT.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ static Stream<Arguments> allThemes() {
3838
Arguments.of(new TRS80Theme(), "TRS-80"),
3939
Arguments.of(new DOSTheme(), "DOS"),
4040
Arguments.of(new DBase3Theme(), "dBASE III"),
41-
Arguments.of(new DBase4Theme(), "dBASE IV")
41+
Arguments.of(new DBase4Theme(), "dBASE IV"),
42+
Arguments.of(new DBase4_3DTheme(), "dBASE IV 3D")
4243
);
4344
}
4445

@@ -52,7 +53,8 @@ static Stream<Arguments> asciiThemes() {
5253
Arguments.of(new TRS80Theme(), "TRS-80"),
5354
Arguments.of(new DOSTheme(), "DOS"),
5455
Arguments.of(new DBase3Theme(), "dBASE III"),
55-
Arguments.of(new DBase4Theme(), "dBASE IV")
56+
Arguments.of(new DBase4Theme(), "dBASE IV"),
57+
Arguments.of(new DBase4_3DTheme(), "dBASE IV 3D")
5658
);
5759
}
5860

0 commit comments

Comments
 (0)