plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "2.1.0"
id("org.jetbrains.intellij.platform") version "2.7.0"
}
group = "com.sdk.dynform.tools"
version = "3.2.5"
repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}
// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
dependencies {
intellijPlatform {
create("IU", "2025.1")
testFramework(org.jetbrains.intellij.platform.gradle.TestFrameworkType.Platform)
// Add necessary plugin dependencies for compilation here, example:
bundledPlugin("com.intellij.java")
bundledPlugin("com.intellij.database")
bundledPlugin("com.intellij.jsp")
bundledPlugin("JavaScript")
}
implementation("org.freemarker:freemarker:2.3.32")
}
intellijPlatform {
pluginConfiguration {
ideaVersion {
sinceBuild = "251"
}
changeNotes = """
[3.2.5]
- Dataset to Form Mapping: Implemented comprehensive reference and completion support for the
FORM-NAME attribute in DATASET > FIELDS > FIELD.
- Smart Field Resolution:
FORM-NAME now correctly resolves to hidden fields in FORM_ENTRY > FIELDS and any named fields within FORM_ENTRY > LAYOUT.
- Recursive Form Scanning: Enhanced field discovery to scan across all form entries in the current and recursively included
.frml files.
[3.2.4]
- Persistent Generation Directories: Generator now remembers the last used directory for Action Beans and Dataset XMLs independently per project.
- Auto-Open Generated Files: Added configuration to automatically open newly created files in the editor, with a customizable limit on the number of files.
- Strict Project-Relative Paths: I18n and XSD configuration now strictly enforces file selection within the project root and stores paths as relative for maximum portability.
- Smart File Browser: Improved file picker logic to automatically start at the current configured directory if it's within the project, falling back to the project root otherwise.
[3.2.3]
- Advanced Data Referencing: Implemented comprehensive reference and completion support for
<FOREIGN-DATASETS> and <MASTER-DATA> structures.
- Contextual Field Resolution: Enhanced field resolution logic to resolve fields from datasets specified by
DATASET-ID and DATAID attributes within their respective tags.
- Recursive Resource Scanning: Improved dataset and grid scanning to search across recursively included
.frml files, ensuring consistent navigation and completion throughout the project.
[3.2.2]
- UI/UX Improvement: Updated the I18n settings to allow selecting the message bundle XML file directly via a file browser, improving configuration usability.
- Core Enhancement: Modified I18nUtils to load message files via absolute paths from project settings, increasing reliability across different project structures.
[3.2.1]
- Bug Fix: Resolved a
ConcurrentModificationException in the I18n cache mechanism caused by concurrent background thread access.
[3.2.0]
- Schema Validation: Introduced project-level automatic XSD registration. Configure a target folder and namespace prefix to seamlessly map
.xsd files to the ExternalResourceManager.
- Architecture: Finalized rebranding by standardizing internal packages to
com.sdk.dynform.* for better consistency.
- UI Improvement: Streamlined the plugin settings UI into distinct Internationalization and Schema Validation groups.
[3.1.0]
- Advanced Navigation: Implemented bidirectional field referencing between
<FIELDS>, <LAYOUT>, and <TITLES> tags in .frml files.
- Cross-Module Support: Added support for cross-module file inclusion and referencing using
/module/path and module-relative #path syntax.
- AJAX-OPTION Enhancements:
- Reference and completion support for datasets defined in
defs/ajax.xml.
- Smart mapping for
SRC (AJAX datasets) and TARGET (local form fields) attributes.
- Robust Field Resolution: Enhanced deep recursive search for fields/sections within nested layouts (Sections, Rows, and Multi-field lists).
- Path Auto-Correction: Added handling for common keyboard typos (e.g., Thai 'ิ' instead of '/') in file paths.
- Global Resource Scanning:
GRID-ID now intelligently searches across all recursively included .frml files.
[3.0.1]
- Rebranding: Renamed plugin to "DynamicForm Tools" to better reflect its expanding capabilities.
- I18n Support: Added comprehensive tools for internationalization:
- Inlay hints and code folding for i18n keys in Java, XML, and JavaScript.
- Auto-completion and reference navigation for keys defined in
message.xml.
- Support for multiple message file locations and naming patterns.
- DynForm Support: Introduced dedicated support for
.frml files, including file type recognition and specialized completion helpers.
- Architecture Refactoring: Complete package reorganization to
com.sdk.dynform.tools for better modularity.
[2.1.2]
- Feature: Grouped database actions into a single "Generate Action Models" popup menu.
- UI: Renamed base action to "Generate Action Models V2" to distinguish it from V3.
- UI: Improved context menu organization by placing grouped actions at the top of the Database View menu.
[2.1.1]
- Update: Case-insensitive column type mapping in GUtils.java.
- Update: Add "number" type mapping support for broader database compatibility.
- Resource: Added sample Dataset.xml in DevResources for reference.
[2.1.0]
- Add: Generate Dataset XML feature to generate XML table definitions from database tables.
- Feature: Intelligent label generation for XML datasets, prioritizing database column comments with fallback to entity-based keys.
- Feature: Automatic mapping of database types to XML types (TEXT, NUMBER, DATE) and column width extraction.
- Shortcut: Added
Ctrl + Alt + J for the dataset generation action.
[2.0.1]
- update : Refactory class structure of sdk.dbutils -> sdk.db.xxxx
- Add : Generate for new class structure as V3
[1.1.2]
- fix: Handle databases that do not support user-defined types
[1.1.1]
- fix: Correctly generate primary keys. The generator was failing to identify primary key columns, resulting in generated beans without them. This has been fixed by updating the code to use the `getColumnsRef()` method, which correctly retrieves the column names for the primary key.
[1.1.0]
New Features and Enhancements
- DTO Generation: Introduced new functionality to generate Data Transfer Object (DTO) classes alongside ActionBeans. This includes new FreeMarker templates (
actionDTO.ftl, actionDTO.extend.ftl) and updated logic in GeneratorServices.java.
- ActionField and DTOField Enhancements: Implemented enhancements related to the generation of
ActionField and DTOField within the generated classes.
Refactoring and Improvements
- Project Structure Refactoring: The project structure has been reorganized. Generator-related classes were moved to a new package (
com.sdk.generators.actionmodels), and template directory names were standardized to src/main/resources/templates.
- Build System Updates: Updated
build.gradle.kts, plugin.xml, and Gradle wrapper files to reflect the structural and functional enhancements.
"""
}
}
tasks {
// Set the JVM compatibility versions
withType {
sourceCompatibility = "21"
targetCompatibility = "21"
}
// signPlugin {
// certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
// privateKey.set(System.getenv("PRIVATE_KEY"))
// password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
// }
//
// publishPlugin {
// token.set(System.getenv("PUBLISH_TOKEN"))
// }
}