Files
Dynamic-Form-Tools/build.gradle.kts
skidus f705cd11b9 feat: implement advanced bidirectional field referencing and cross-module path resolution
- Core Logic Enhancements:
    - Implement bidirectional field referencing between <FIELDS>, <LAYOUT>, and <TITLES> tags in .frml files, enabling seamless navigation from definitions to usages and vice versa.
    - Add robust support for AJAX-OPTION field mapping:
        - SRC attribute: Links to field definitions within defs/ajax.xml datasets.
        - TARGET attribute: Links to local field definitions within the same form.
    - Implement global grid resolution: GRID-ID now searches across the current file and all recursively included files (<INCLUDE>).
    - Enhance deep recursive search for fields/sections within nested tags like <SECTION>, <ROW>, and <FIELD-LIST>.

- Path Resolution & Helpers (DynFormPathUtils):
    - Added support for module-relative paths starting with # (mapping to view/frm/).
    - Added support for cross-module paths starting with / (mapping to WEB-INF/app/module/{module}/view/frm/).
    - Implemented auto-correction for common keyboard typos (Thai 'ิ' instead of /).
    - Added specialized helpers for locating ajax.xml and included files within the framework's structure.

- Smart Completion Enhancements:
    - Added context-aware completion for TARGET and SRC fields in AJAX update-fields.
    - Enabled global GRID-ID completion by scanning all included resources.
    - Improved dataset completion to include both local and AJAX-defined datasets.

- Test Resources:
    - Added a comprehensive set of real-world examples (bdgt04, bdgt05, bdgt06) in DevResources/full-examples/ to validate complex cross-module and master-detail scenarios.
2026-04-10 12:56:04 +07:00

119 lines
5.4 KiB
Plaintext

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.0.1"
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 = """
<h2>[3.0.1]</h2>
<ul>
<li><strong>Rebranding:</strong> Renamed plugin to "Dynamic Form Helper" (DynamicFormTools) to better reflect its expanding capabilities.</li>
<li><strong>I18n Support:</strong> Added comprehensive tools for internationalization:
<ul>
<li>Inlay hints and code folding for i18n keys in Java, XML, and JavaScript.</li>
<li>Auto-completion and reference navigation for keys defined in <code>message.xml</code>.</li>
<li>Support for multiple message file locations and naming patterns.</li>
</ul>
</li>
<li><strong>DynForm Support:</strong> Introduced dedicated support for <code>.frml</code> files, including file type recognition and specialized completion helpers.</li>
<li><strong>Architecture Refactoring:</strong> Complete package reorganization to <code>com.sdk.dynform.tools</code> for better modularity.</li>
</ul>
<h2>[2.1.2]</h2>
<ul>
<li>Feature: Grouped database actions into a single "Generate Action Models" popup menu.</li>
<li>UI: Renamed base action to "Generate Action Models V2" to distinguish it from V3.</li>
<li>UI: Improved context menu organization by placing grouped actions at the top of the Database View menu.</li>
</ul>
<h2>[2.1.1]</h2>
<ul>
<li>Update: Case-insensitive column type mapping in GUtils.java.</li>
<li>Update: Add "number" type mapping support for broader database compatibility.</li>
<li>Resource: Added sample Dataset.xml in DevResources for reference.</li>
</ul>
<h2>[2.1.0]</h2>
<ul>
<li>Add: Generate Dataset XML feature to generate XML table definitions from database tables.</li>
<li>Feature: Intelligent label generation for XML datasets, prioritizing database column comments with fallback to entity-based keys.</li>
<li>Feature: Automatic mapping of database types to XML types (TEXT, NUMBER, DATE) and column width extraction.</li>
<li>Shortcut: Added <code>Ctrl + Alt + J</code> for the dataset generation action.</li>
</ul>
<h2>[2.0.1]</h2>
<ul>
<li>update : Refactory class structure of sdk.dbutils -> sdk.db.xxxx</li>
<li>Add : Generate for new class structure as V3 </li>
</ul>
<h2>[1.1.2]</h2>
<ul>
<li>fix: Handle databases that do not support user-defined types</li>
</ul>
<h2>[1.1.1]</h2>
<ul>
<li>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.</li>
</ul>
<h2>[1.1.0]</h2>
<h3>New Features and Enhancements</h3>
<ul>
<li><strong>DTO Generation:</strong> Introduced new functionality to generate Data Transfer Object (DTO) classes alongside ActionBeans. This includes new FreeMarker templates (<code>actionDTO.ftl</code>, <code>actionDTO.extend.ftl</code>) and updated logic in <code>GeneratorServices.java</code>.</li>
<li><strong>ActionField and DTOField Enhancements:</strong> Implemented enhancements related to the generation of <code>ActionField</code> and <code>DTOField</code> within the generated classes.</li>
</ul>
<h3>Refactoring and Improvements</h3>
<ul>
<li><strong>Project Structure Refactoring:</strong> The project structure has been reorganized. Generator-related classes were moved to a new package (<code>com.sdk.generators.actionmodels</code>), and template directory names were standardized to <code>src/main/resources/templates</code>.</li>
<li><strong>Build System Updates:</strong> Updated <code>build.gradle.kts</code>, <code>plugin.xml</code>, and Gradle wrapper files to reflect the structural and functional enhancements.</li>
</ul>
"""
}
}
tasks {
// Set the JVM compatibility versions
withType<JavaCompile> {
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"))
// }
}