From b6dc46d775b5bf0d182fdf7a8c5b9fc13633d731 Mon Sep 17 00:00:00 2001 From: skidus Date: Mon, 4 May 2026 14:39:08 +0700 Subject: [PATCH] feat: update plugin version to 3.2.9 and enhance i18n/reference support - Extend I18n support for MESSAGE attribute in UNIQ-CHECK and other tags. - Add code completion and reference navigation for CHECK-FIELDS resolving against related grid datasets. - Fix duplicate i18n Inlay Hints in JSP and JS files by targeting the innermost PSI elements. - Enhance MGET_PATTERN regex to support object-chained calls (e.g., factory.$M.get). --- .../bdgt04/exec/bdgt04-actions.jsp | 93 ++++++++++ build.gradle.kts | 10 +- .../dynform/DynFormCompletionContributor.java | 26 +++ .../tools/dynform/DynFormPathUtils.java | 12 ++ .../dynform/DynFormReferenceContributor.java | 163 ++++++++++++++++++ .../tools/i18n/I18nCompletionContributor.java | 6 +- .../tools/i18n/I18nInlayHintsProvider.java | 88 ++++------ .../tools/i18n/I18nReferenceContributor.java | 7 +- .../com/sdk/dynform/tools/i18n/I18nUtils.java | 2 +- src/main/resources/META-INF/plugin.xml | 6 + 10 files changed, 352 insertions(+), 61 deletions(-) create mode 100755 DevResources/full-examples/bdgt04/exec/bdgt04-actions.jsp diff --git a/DevResources/full-examples/bdgt04/exec/bdgt04-actions.jsp b/DevResources/full-examples/bdgt04/exec/bdgt04-actions.jsp new file mode 100755 index 0000000..7c944b0 --- /dev/null +++ b/DevResources/full-examples/bdgt04/exec/bdgt04-actions.jsp @@ -0,0 +1,93 @@ +<%@ page contentType="text/html; charset=UTF-8" language="java" %> +<%@ page import="java.lang.reflect.*" %> +<%@ page import="sdk.json.*" %> +<%@ page import="sdk.utils.*" %> +<%@ page import="sdk.api.client.*" %> +<%@ page import="java.util.*" %> +<%@ page import="com.apps.SystemFactory" %> +<%@ page import="sdk.db.connector.*" %> +<%@ page import="com.bgt.model.bean.*" %> +<%! + SDKLogger logger = new SDKLogger("Operate-actions"); + + + public boolean bgt0102010_add(SystemFactory factory, JSONObject jsData) { + if (!jsData.getString("-- some important field --").isBlank()) { + DBConnector dbConn = factory.appDatabase.getXConnector(); + try { + { + REFER_CODE dsRefcode = new REFER_CODE(dbConn); + dsRefcode.append(); + dsRefcode.setRFG_GRP("STG-ITEMS"); + dsRefcode.setRFC_CODE(jsData.getString(REFER_CODE.RFC_CODE)); + dsRefcode.setRFC_DESC(jsData.getString(REFER_CODE.RFC_DESC)); + dsRefcode.setRFC_FLAG(jsData.getString(REFER_CODE.RFC_FLAG)); + dsRefcode.execute(); + } + { + REFER_GROUP dsRefGroup = new REFER_GROUP(dbConn); + dsRefGroup.insert(); + dsRefGroup.setRFG_CODE(jsData.getString(REFER_CODE.RFC_CODE)); + dsRefGroup.setRFG_NAME(jsData.getString(REFER_CODE.RFC_DESC)); + dsRefGroup.setRFG_FLAG(jsData.getString(REFER_CODE.RFC_FLAG)); + dsRefGroup.setRFG_EDITOR("STG"); + dsRefGroup.execute(); + } + factory.setRestCode("OK"); + dbConn.close(); + } catch (Exception ex) { + factory.setRestCode("ERROR"); + factory.setRestMsg(ex.getMessage()); + dbConn.close(); + return false; + } + } + return true; + } + + public boolean _action_skeleton(SystemFactory factory, JSONObject jsData) { + if (!jsData.getString("-- some important field --").isBlank()) { + DBConnector dbConn = factory.appDatabase.getXConnector(); + try { + + factory.setRestCode("OK"); + dbConn.close(); + } catch (Exception ex) { + factory.setRestCode("ERROR"); + factory.setRestMsg(ex.getMessage()); + dbConn.close(); + return false; + } + } + return true; + } + + public boolean execute(String action, SystemFactory factory) { + try { + Class thisClass = getClass(); + Method mtAction = thisClass.getMethod(action, SystemFactory.class, JSONObject.class); + String data = factory.rqsCtx.getParameter("data", "{}"); + JSONObject jsData = new JSONObject(data); + boolean result = (boolean) mtAction.invoke(this, factory, jsData); + return result; + } catch (Exception e) { + factory.setRestCode("ERROR"); + factory.setRestMsg(e+"\n"+JUtils.stackToString(e,10)); + logger.error(e); + return false; + } + } +%> + +<% + SystemFactory factory = SystemFactory.getInstance(request); + String action = factory.rqsCtx.getParameter("action", ""); + + if (factory.isValidJaxVF()) { + action = action.replaceAll("-", "_").replaceAll(" ", "_"); + this.execute(action, factory); + } else { + factory.setRestCode("ERROR"); + factory.setRestMsg("TK-Controller mismatch."); + } +%> \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index cccc436..d783f2b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { id("org.jetbrains.intellij.platform") version "2.7.0" } group = "com.sdk.dynform.tools" -version = "3.2.8" +version = "3.2.9" repositories { mavenCentral() @@ -38,7 +38,13 @@ intellijPlatform { } changeNotes = """ -

[3.2.7]

+

[3.2.9]

+ +

[3.2.8]