From ba030a5a5ad3b6fc0ee72faa8d361d5b08521a8e Mon Sep 17 00:00:00 2001 From: matthew-renodin-bh Date: Thu, 17 Jul 2025 15:55:50 -0400 Subject: [PATCH 1/5] Update main.js --- main.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/main.js b/main.js index 4dcf302..a188683 100644 --- a/main.js +++ b/main.js @@ -1,26 +1,20 @@ let dict = { - // Class diagram + // UML diagrams "uml.class.fillColor": "#d8e1f8", "uml.interface.fillColor": "#ffffcd", "uml.enumeration.fillColor": "#f4d3d3", - - // Use case diagram "uml.actor.fillColor": "#ffffff", "uml.package.fillColor": "#fff2e4", "uml.usecase.fillColor": "#d6ffae", - - // Activity diagram "uml.action.fillColor": "#d8e1f8", "uml.controlnode.fillColor": "#cce18d", - - // Deployment and component diagram "uml.node.fillColor": "#f1d9c2", "uml.component.fillColor": "#e1e5fa", "uml.artifact.fillColor": "#e3ffc9", "uml.port.fillColor": "#c082ff", - // Flowchart diagram + // Flowchart diagrams "flowchart.terminator.fillColor": "#9acef6", "flowchart.process.fillColor": "#fff07c", "flowchart.decision.fillColor": "#cce18d", @@ -30,6 +24,20 @@ let dict = { "flowchart.data.fillColor": "#dee7fe", "flowchart.manual-input.fillColor": "#edeffa", + // ✅ SysML color scheme + "sysml.block.fillColor": "#4682B4", // Steel Blue + "sysml.requirement.fillColor": "#FFFFF0", // Ivory + "sysml.constraintblock.fillColor": "#D3D3D3", // Light Gray + "sysml.valuetype.fillColor": "#FFFFF0", // Ivory + "sysml.port.fillColor": "#008080", // Teal + "sysml.fullport.fillColor": "#20B2AA", // Light Sea Green + "sysml.proxyport.fillColor": "#5F9EA0", // Cadet Blue + "sysml.flowport.fillColor": "#6B8E23", // Olive Drab + "sysml.itemflow.fillColor": "#6B8E23", // Olive Drab + "sysml.connector.fillColor": "#4682B4", // Steel Blue + "sysml.package.fillColor": "#B0C4DE", // Light Steel Blue + + } // Prefix used in class names @@ -91,4 +99,4 @@ function init() { prefManager = app.preferences } -exports.init = init \ No newline at end of file +exports.init = init From 4c26a32b2a1043dfd0615bbee45866b2203f7d65 Mon Sep 17 00:00:00 2001 From: matthew-renodin-bh Date: Thu, 17 Jul 2025 16:03:09 -0400 Subject: [PATCH 2/5] Update main.js --- main.js | 66 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/main.js b/main.js index a188683..8171522 100644 --- a/main.js +++ b/main.js @@ -1,41 +1,41 @@ let dict = { // UML diagrams - "uml.class.fillColor": "#d8e1f8", - "uml.interface.fillColor": "#ffffcd", - "uml.enumeration.fillColor": "#f4d3d3", - "uml.actor.fillColor": "#ffffff", - "uml.package.fillColor": "#fff2e4", - "uml.usecase.fillColor": "#d6ffae", - "uml.action.fillColor": "#d8e1f8", - "uml.controlnode.fillColor": "#cce18d", - "uml.node.fillColor": "#f1d9c2", - "uml.component.fillColor": "#e1e5fa", - "uml.artifact.fillColor": "#e3ffc9", - "uml.port.fillColor": "#c082ff", + "uml.class": { fillColor: "#d8e1f8", lineColor: "#5c82b0" }, + "uml.interface": { fillColor: "#ffffcd", lineColor: "#c4c486" }, + "uml.enumeration": { fillColor: "#f4d3d3", lineColor: "#cc9999" }, + "uml.actor": { fillColor: "#ffffff", lineColor: "#999999" }, + "uml.package": { fillColor: "#fff2e4", lineColor: "#e6d0b7" }, + "uml.usecase": { fillColor: "#d6ffae", lineColor: "#8fb96b" }, + "uml.action": { fillColor: "#d8e1f8", lineColor: "#5c82b0" }, + "uml.controlnode": { fillColor: "#cce18d", lineColor: "#7c9e3c" }, + "uml.node": { fillColor: "#f1d9c2", lineColor: "#c2aa8f" }, + "uml.component": { fillColor: "#e1e5fa", lineColor: "#a0a6d6" }, + "uml.artifact": { fillColor: "#e3ffc9", lineColor: "#a2d987" }, + "uml.port": { fillColor: "#c082ff", lineColor: "#9955cc" }, // Flowchart diagrams - "flowchart.terminator.fillColor": "#9acef6", - "flowchart.process.fillColor": "#fff07c", - "flowchart.decision.fillColor": "#cce18d", - "flowchart.database.fillColor": "#f8a9cc", - "flowchart.document.fillColor": "#8acd8a", - "flowchart.predefined-process.fillColor": "#ddc8c3", - "flowchart.data.fillColor": "#dee7fe", - "flowchart.manual-input.fillColor": "#edeffa", - - // ✅ SysML color scheme - "sysml.block.fillColor": "#4682B4", // Steel Blue - "sysml.requirement.fillColor": "#FFFFF0", // Ivory - "sysml.constraintblock.fillColor": "#D3D3D3", // Light Gray - "sysml.valuetype.fillColor": "#FFFFF0", // Ivory - "sysml.port.fillColor": "#008080", // Teal - "sysml.fullport.fillColor": "#20B2AA", // Light Sea Green - "sysml.proxyport.fillColor": "#5F9EA0", // Cadet Blue - "sysml.flowport.fillColor": "#6B8E23", // Olive Drab - "sysml.itemflow.fillColor": "#6B8E23", // Olive Drab - "sysml.connector.fillColor": "#4682B4", // Steel Blue - "sysml.package.fillColor": "#B0C4DE", // Light Steel Blue + "flowchart.terminator": { fillColor: "#9acef6", lineColor: "#669fd6" }, + "flowchart.process": { fillColor: "#fff07c", lineColor: "#d6c757" }, + "flowchart.decision": { fillColor: "#cce18d", lineColor: "#8fb657" }, + "flowchart.database": { fillColor: "#f8a9cc", lineColor: "#d97fa7" }, + "flowchart.document": { fillColor: "#8acd8a", lineColor: "#5da35d" }, + "flowchart.predefined-process": { fillColor: "#ddc8c3", lineColor: "#bca29e" }, + "flowchart.data": { fillColor: "#dee7fe", lineColor: "#aab6e7" }, + "flowchart.manual-input": { fillColor: "#edeffa", lineColor: "#c0c3d7" }, + + // ✅ SysML diagrams + "sysml.block": { fillColor: "#4682B4", lineColor: "#2F4F4F" }, + "sysml.requirement": { fillColor: "#FFFFF0", lineColor: "#BDB76B" }, + "sysml.constraintblock": { fillColor: "#D3D3D3", lineColor: "#A9A9A9" }, + "sysml.valuetype": { fillColor: "#FFFFF0", lineColor: "#BDB76B" }, + "sysml.port": { fillColor: "#008080", lineColor: "#004C4C" }, + "sysml.fullport": { fillColor: "#20B2AA", lineColor: "#006666" }, + "sysml.proxyport": { fillColor: "#5F9EA0", lineColor: "#2F4F4F" }, + "sysml.flowport": { fillColor: "#6B8E23", lineColor: "#556B2F" }, + "sysml.itemflow": { fillColor: "#6B8E23", lineColor: "#556B2F" }, + "sysml.connector": { fillColor: "#4682B4", lineColor: "#2F4F4F" }, + "sysml.package": { fillColor: "#B0C4DE", lineColor: "#4682B4" } } From 4a4e1789af42cdb2b87d73260767bc2659e6cadb Mon Sep 17 00:00:00 2001 From: matthew-renodin-bh Date: Thu, 17 Jul 2025 16:10:04 -0400 Subject: [PATCH 3/5] Update main.js --- main.js | 111 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 38 deletions(-) diff --git a/main.js b/main.js index 8171522..6af1d18 100644 --- a/main.js +++ b/main.js @@ -1,43 +1,78 @@ let dict = { - // UML diagrams - "uml.class": { fillColor: "#d8e1f8", lineColor: "#5c82b0" }, - "uml.interface": { fillColor: "#ffffcd", lineColor: "#c4c486" }, - "uml.enumeration": { fillColor: "#f4d3d3", lineColor: "#cc9999" }, - "uml.actor": { fillColor: "#ffffff", lineColor: "#999999" }, - "uml.package": { fillColor: "#fff2e4", lineColor: "#e6d0b7" }, - "uml.usecase": { fillColor: "#d6ffae", lineColor: "#8fb96b" }, - "uml.action": { fillColor: "#d8e1f8", lineColor: "#5c82b0" }, - "uml.controlnode": { fillColor: "#cce18d", lineColor: "#7c9e3c" }, - "uml.node": { fillColor: "#f1d9c2", lineColor: "#c2aa8f" }, - "uml.component": { fillColor: "#e1e5fa", lineColor: "#a0a6d6" }, - "uml.artifact": { fillColor: "#e3ffc9", lineColor: "#a2d987" }, - "uml.port": { fillColor: "#c082ff", lineColor: "#9955cc" }, - - // Flowchart diagrams - "flowchart.terminator": { fillColor: "#9acef6", lineColor: "#669fd6" }, - "flowchart.process": { fillColor: "#fff07c", lineColor: "#d6c757" }, - "flowchart.decision": { fillColor: "#cce18d", lineColor: "#8fb657" }, - "flowchart.database": { fillColor: "#f8a9cc", lineColor: "#d97fa7" }, - "flowchart.document": { fillColor: "#8acd8a", lineColor: "#5da35d" }, - "flowchart.predefined-process": { fillColor: "#ddc8c3", lineColor: "#bca29e" }, - "flowchart.data": { fillColor: "#dee7fe", lineColor: "#aab6e7" }, - "flowchart.manual-input": { fillColor: "#edeffa", lineColor: "#c0c3d7" }, - - // ✅ SysML diagrams - "sysml.block": { fillColor: "#4682B4", lineColor: "#2F4F4F" }, - "sysml.requirement": { fillColor: "#FFFFF0", lineColor: "#BDB76B" }, - "sysml.constraintblock": { fillColor: "#D3D3D3", lineColor: "#A9A9A9" }, - "sysml.valuetype": { fillColor: "#FFFFF0", lineColor: "#BDB76B" }, - "sysml.port": { fillColor: "#008080", lineColor: "#004C4C" }, - "sysml.fullport": { fillColor: "#20B2AA", lineColor: "#006666" }, - "sysml.proxyport": { fillColor: "#5F9EA0", lineColor: "#2F4F4F" }, - "sysml.flowport": { fillColor: "#6B8E23", lineColor: "#556B2F" }, - "sysml.itemflow": { fillColor: "#6B8E23", lineColor: "#556B2F" }, - "sysml.connector": { fillColor: "#4682B4", lineColor: "#2F4F4F" }, - "sysml.package": { fillColor: "#B0C4DE", lineColor: "#4682B4" } - - + // Class diagram + "uml.class.fillColor": "#d8e1f8", + "uml.class.lineColor": "#5c82b0", + "uml.interface.fillColor": "#ffffcd", + "uml.interface.lineColor": "#c4c486", + "uml.enumeration.fillColor": "#f4d3d3", + "uml.enumeration.lineColor": "#cc9999", + + // Use case diagram + "uml.actor.fillColor": "#ffffff", + "uml.actor.lineColor": "#999999", + "uml.package.fillColor": "#fff2e4", + "uml.package.lineColor": "#e6d0b7", + "uml.usecase.fillColor": "#d6ffae", + "uml.usecase.lineColor": "#8fb96b", + + // Activity diagram + "uml.action.fillColor": "#d8e1f8", + "uml.action.lineColor": "#5c82b0", + "uml.controlnode.fillColor": "#cce18d", + "uml.controlnode.lineColor": "#7c9e3c", + + // Deployment and component diagram + "uml.node.fillColor": "#f1d9c2", + "uml.node.lineColor": "#c2aa8f", + "uml.component.fillColor": "#e1e5fa", + "uml.component.lineColor": "#a0a6d6", + "uml.artifact.fillColor": "#e3ffc9", + "uml.artifact.lineColor": "#a2d987", + "uml.port.fillColor": "#c082ff", + "uml.port.lineColor": "#9955cc", + + // Flowchart diagram + "flowchart.terminator.fillColor": "#9acef6", + "flowchart.terminator.lineColor": "#669fd6", + "flowchart.process.fillColor": "#fff07c", + "flowchart.process.lineColor": "#d6c757", + "flowchart.decision.fillColor": "#cce18d", + "flowchart.decision.lineColor": "#8fb657", + "flowchart.database.fillColor": "#f8a9cc", + "flowchart.database.lineColor": "#d97fa7", + "flowchart.document.fillColor": "#8acd8a", + "flowchart.document.lineColor": "#5da35d", + "flowchart.predefined-process.fillColor": "#ddc8c3", + "flowchart.predefined-process.lineColor": "#bca29e", + "flowchart.data.fillColor": "#dee7fe", + "flowchart.data.lineColor": "#aab6e7", + "flowchart.manual-input.fillColor": "#edeffa", + "flowchart.manual-input.lineColor": "#c0c3d7", + + // ✅ SysML elements + "sysml.block.fillColor": "#4682B4", + "sysml.block.lineColor": "#2F4F4F", + "sysml.requirement.fillColor": "#FFFFF0", + "sysml.requirement.lineColor": "#BDB76B", + "sysml.constraintblock.fillColor": "#D3D3D3", + "sysml.constraintblock.lineColor": "#A9A9A9", + "sysml.valuetype.fillColor": "#FFFFF0", + "sysml.valuetype.lineColor": "#BDB76B", + "sysml.port.fillColor": "#008080", + "sysml.port.lineColor": "#004C4C", + "sysml.fullport.fillColor": "#20B2AA", + "sysml.fullport.lineColor": "#006666", + "sysml.proxyport.fillColor": "#5F9EA0", + "sysml.proxyport.lineColor": "#2F4F4F", + "sysml.flowport.fillColor": "#6B8E23", + "sysml.flowport.lineColor": "#556B2F", + "sysml.itemflow.fillColor": "#6B8E23", + "sysml.itemflow.lineColor": "#556B2F", + "sysml.connector.fillColor": "#4682B4", + "sysml.connector.lineColor": "#2F4F4F", + "sysml.package.fillColor": "#B0C4DE", + "sysml.package.lineColor": "#4682B4" } // Prefix used in class names From faefeded23d165bcdcfadbf7f619ae2c74051b88 Mon Sep 17 00:00:00 2001 From: matthew-renodin-bh Date: Thu, 17 Jul 2025 16:32:02 -0400 Subject: [PATCH 4/5] Update main.js --- main.js | 70 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/main.js b/main.js index 6af1d18..5ae3cc0 100644 --- a/main.js +++ b/main.js @@ -75,63 +75,71 @@ let dict = { "sysml.package.lineColor": "#4682B4" } -// Prefix used in class names -let prefix = { +let prefManager; + +// Prefix used to match view class names to dictionary keys +const prefixMap = { "DFD": "dfd", "FC": "flowchart", "UML": "uml", "SysML": "sysml", "ERD": "erd" -} - +}; +// Set all custom colors defined in `dict` function setColors() { for (const key of Object.keys(dict)) { - prefManager.set(key, dict[key]) + prefManager.set(key, dict[key]); } - } +// Reset all colors to default (null) function setDefault() { for (const key of Object.keys(dict)) { - prefManager.set(key, null) + prefManager.set(key, null); } } +// Apply color settings to the currently active diagram function applyOnDiagram() { - let diagram = app.diagrams.getCurrentDiagram() - for (const view of diagram.ownedViews) { + const diagram = app.diagrams.getCurrentDiagram(); - // Build the preference Id using the class name and the class prefix - let name = view.getClassName() - let prefId = "" - - // TODO check Multi-Document and Manuel-input + if (!diagram) return; - for (const key of Object.keys(prefix)) { - if (name.startsWith(key)) { - prefId += prefix[key] + "." - name = name.substr(key.length) + for (const view of diagram.ownedViews) { + let className = view.getClassName(); + let prefix = ""; + + // Identify the correct prefix (e.g., "sysml", "uml", etc.) + for (const key of Object.keys(prefixMap)) { + if (className.startsWith(key)) { + prefix = prefixMap[key] + "."; + className = className.substring(key.length); break; } } - prefId += name.replace("View", "").toLowerCase()+".fillColor" - // Change the element color - let prefColor = prefManager.get(prefId) - if (prefColor != null) view.fillColor = prefColor - } - app.diagrams.repaint() -} + const baseName = className.replace("View", "").toLowerCase(); + const fillKey = prefix + baseName + ".fillColor"; + const lineKey = prefix + baseName + ".lineColor"; + const fillColor = prefManager.get(fillKey); + const lineColor = prefManager.get(lineKey); -let prefManager; + if (fillColor !== null) view.fillColor = fillColor; + if (lineColor !== null) view.lineColor = lineColor; + } + + app.diagrams.repaint(); +} + +// Register commands with StarUML function init() { - app.commands.register('color:set', setColors) - app.commands.register('color:default', setDefault) - app.commands.register('color:apply', applyOnDiagram) - prefManager = app.preferences + prefManager = app.preferences; + app.commands.register("color:set", setColors); + app.commands.register("color:default", setDefault); + app.commands.register("color:apply", applyOnDiagram); } -exports.init = init +exports.init = init; From 8d69c2db8c50a105546461c080543b64da9a5e88 Mon Sep 17 00:00:00 2001 From: matthew-renodin-bh Date: Thu, 17 Jul 2025 16:38:39 -0400 Subject: [PATCH 5/5] Update package.json --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 8966771..fe9db88 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { - "name": "pholith.easycolors", + "name": "pallimustus.easycolors", "title": "EasyColors", "description": "Diagram color managment", - "homepage": "https://github.com/Pholith/StarUML-ColorExtension", + "homepage": "https://github.com/matthew-renodin-bh/StarUML-ColorExtension", "version": "1.0.0", "keywords": ["color"], "author": { - "name": "Vincent Buisset", + "name": "Matthew Renodin", "email": "vincent22062@gmail.com", - "url": "https://github.com/Pholith" + "url": "https://github.com/matthew-renodin" }, - "license": "Not choiced", + "license": "MIT", "engines": { "staruml": ">=4.0.0" } - } \ No newline at end of file + }