127 lines
4.6 KiB
Markdown
127 lines
4.6 KiB
Markdown
# PKI Management (JavaFX)
|
||
|
||
<p align="center">
|
||
<img src="https://img.shields.io/badge/Java-ED8B00?style=for-the-badge&logo=openjdk&logoColor=white" alt="Java badge"/>
|
||
<img src="https://img.shields.io/badge/JavaFX-1B6AC6?style=for-the-badge&logo=java&logoColor=white" alt="JavaFX badge"/>
|
||
<img src="https://img.shields.io/badge/Maven-C71A36?style=for-the-badge&logo=apache-maven&logoColor=white" alt="Maven badge"/>
|
||
<img src="https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Windows badge"/>
|
||
<img src="https://img.shields.io/badge/Architecture-Modular-4CAF50?style=for-the-badge" alt="Modular architecture badge"/>
|
||
</p>
|
||
|
||
> Современное настольное приложение на JavaFX для управления PKI-ресурсами с модульной архитектурой, настраиваемой навигацией и системой прав доступа.
|
||
|
||
## ✨ Особенности
|
||
|
||
- **Компонентная навигация**
|
||
- `MenuItem` — визуальные блоки-оглавления
|
||
- `SubMenuItem` — кликабельные пункты подменю
|
||
- Управление видимостью пунктов (вкл/выкл), автоматическое скрытие пустых блоков
|
||
- **Модульная архитектура**
|
||
- Пример модуля: `Test 1`
|
||
- Настройки с пользовательским и админским режимами
|
||
- **Админский доступ**
|
||
- Диалог ввода пароля с автофокусом
|
||
- Переключение интерфейса настроек (User/Admin)
|
||
- **Конфигурация**
|
||
- Хранится в скрытой папке пользователя `pki_management` (Windows: `C:\Users\{user}\pki_management\config.properties`)
|
||
- Доступ через `ConfigManager` (singleton)
|
||
|
||
## 🧰 Стек
|
||
|
||
- Java 21, JavaFX 21 (Controls + FXML)
|
||
- Maven
|
||
|
||
## 🗂️ Структура проекта
|
||
|
||
```
|
||
src/main/java/com/dsol/pki_management/
|
||
├─ app/ # Запуск приложения
|
||
│ ├─ PKIApplication.java
|
||
│ └─ Launcher.java
|
||
├─ controllers/ # Контроллеры экранов
|
||
│ ├─ MainController.java
|
||
│ └─ SettingsController.java
|
||
├─ components/ # Переиспользуемые UI-компоненты
|
||
│ ├─ MenuItem.java
|
||
│ └─ SubMenuItem.java
|
||
├─ modules/ # Функциональные модули
|
||
│ └─ test1/
|
||
│ └─ Test1Controller.java
|
||
└─ config/ # Конфигурация приложения
|
||
├─ ConfigManager.java
|
||
└─ AppConfig.java
|
||
|
||
src/main/resources/com/dsol/pki_management/
|
||
├─ views/
|
||
│ └─ main.fxml
|
||
├─ components/
|
||
│ ├─ menu-item.fxml
|
||
│ └─ sub-menu-item.fxml
|
||
└─ modules/
|
||
├─ settings/
|
||
│ └─ settings-view.fxml
|
||
└─ test1/
|
||
└─ test1-view.fxml
|
||
```
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
1. Установите JDK 21 и Maven
|
||
2. Сборка и запуск
|
||
|
||
```bash
|
||
# Windows / Linux / macOS
|
||
mvn clean javafx:run
|
||
```
|
||
|
||
Либо через главный класс:
|
||
|
||
```bash
|
||
mvn -q -Dexec.mainClass="com.dsol.pki_management.app.Launcher" exec:java
|
||
```
|
||
|
||
## ⚙️ Конфигурация
|
||
|
||
- Путь: `C:\Users\{user}\pki_management\config.properties` (Windows)
|
||
- Создается автоматически при первом запуске
|
||
- Пример ключей:
|
||
- `admin.password` — пароль администратора (по умолчанию `admin123`)
|
||
- `app.language`, `app.theme` — пользовательские настройки
|
||
|
||
Использование в коде:
|
||
|
||
```java
|
||
var config = ConfigManager.getInstance();
|
||
String pwd = config.getProperty(AppConfig.KEY_ADMIN_PASSWORD, AppConfig.DEFAULT_ADMIN_PASSWORD);
|
||
config.setProperty(AppConfig.KEY_THEME, "light");
|
||
config.saveConfig();
|
||
```
|
||
|
||
## 💡 UX-функции
|
||
|
||
- Гамбургер-меню слева
|
||
- Отображение навигации как дерева
|
||
- Зачеркивание скрытых SubMenu пунктов
|
||
- Скрытие `MenuItem`, если все дочерние скрыты
|
||
|
||
## 🛣️ Дорожная карта
|
||
|
||
- Локализация интерфейса (i18n)
|
||
- Темы (light/dark)
|
||
- Экспорт/импорт настроек
|
||
|
||
## 👩💻 Разработка
|
||
|
||
```bash
|
||
# Сборка
|
||
mvn clean package
|
||
|
||
# Запуск с логами
|
||
mvn -Dprism.verbose=true javafx:run
|
||
```
|
||
|
||
## 📄 Лицензия
|
||
|
||
Проект распространяется на условиях лицензии Apache-2.0.
|
||
|
||
--- |