33import io .snyk .eclipse .plugin .preferences .Preferences ;
44
55public class CodeHtmlProvider extends BaseHtmlProvider {
6- private static CodeHtmlProvider instance = new CodeHtmlProvider ();
6+ private static CodeHtmlProvider instance = new CodeHtmlProvider ();
77
88 public static CodeHtmlProvider getInstance () {
99 synchronized (CodeHtmlProvider .class ) {
@@ -16,61 +16,85 @@ public static CodeHtmlProvider getInstance() {
1616 return instance ;
1717 }
1818
19- @ Override
20- public String getInitScript () {
21- String themeScript = getThemeScript ();
22- String initScript = super .getInitScript ();
23- return initScript + "\n " + """
24- function navigateToIssue(e, target) {
25- e.preventDefault();
26- var filePath = target.getAttribute('file-path');
27- var startLine = target.getAttribute('start-line');
28- var endLine = target.getAttribute('end-line');
29- var startCharacter = target.getAttribute('start-character');
30- var endCharacter = target.getAttribute('end-character');
31- window.openInEditor(filePath, startLine, endLine, startCharacter, endCharacter);
32- }
33- var navigatableLines = document.getElementsByClassName('data-flow-clickable-row');
34- for(var i = 0; i < navigatableLines.length; i++) {
35- navigatableLines[i].onclick = function(e) {
36- navigateToIssue(e, this);
37- return false;
38- };
39- }
40- if(document.getElementById('position-line')) {
41- document.getElementById('position-line').onclick = function(e) {
42- var target = navigatableLines[0];
43- if(target) {
44- navigateToIssue(e, target);
45- }
46- }
47- }
48- // Disable AIfix
49- if(document.getElementById('ai-fix-wrapper') && document.getElementById('no-ai-fix-wrapper')){
50- document.getElementById('ai-fix-wrapper').className = 'hidden';
51- document.getElementById('no-ai-fix-wrapper').className = '';
52- }
53- """ + themeScript ;
54- }
19+ @ Override
20+ public String getInitScript () {
21+ String themeScript = getThemeScript ();
22+ String initScript = super .getInitScript ();
23+ return initScript + "\n " + """
24+ function navigateToIssue(e, target) {
25+ e.preventDefault();
26+ var filePath = target.getAttribute('file-path');
27+ var startLine = target.getAttribute('start-line');
28+ var endLine = target.getAttribute('end-line');
29+ var startCharacter = target.getAttribute('start-character');
30+ var endCharacter = target.getAttribute('end-character');
31+ window.openInEditor(filePath, startLine, endLine, startCharacter, endCharacter);
32+ }
33+ var navigatableLines = document.getElementsByClassName('data-flow-clickable-row');
34+ for(var i = 0; i < navigatableLines.length; i++) {
35+ navigatableLines[i].onclick = function(e) {
36+ navigateToIssue(e, this);
37+ return false;
38+ };
39+ }
40+ if(document.getElementById('position-line')) {
41+ document.getElementById('position-line').onclick = function(e) {
42+ var target = navigatableLines[0];
43+ if(target) {
44+ navigateToIssue(e, target);
45+ }
46+ }
47+ }
48+ """ + themeScript ;
49+ }
50+
51+ private String getThemeScript () {
52+ if (Preferences .getInstance ().isTest ()) {
53+ return "" ;
54+ }
55+
56+ String themeScript = "var isDarkTheme = " + isDarkTheme () + ";\n "
57+ + "document.body.classList.add(isDarkTheme ? 'dark' : 'light');" ;
58+ return themeScript ;
59+ }
60+
61+ @ Override
62+ public String replaceCssVariables (String html ) {
63+ String htmlStyled = super .replaceCssVariables (html );
64+
65+ // Replace CSS variables with actual color values
66+ htmlStyled = htmlStyled .replace ("var(--example-line-removed-color)" ,
67+ super .getColorAsHex ("DELETION_COLOR" , "#ff0000" ));
68+ htmlStyled = htmlStyled .replace ("var(--example-line-added-color)" ,
69+ super .getColorAsHex ("ADDITION_COLOR" , "#00ff00" ));
70+ htmlStyled = htmlStyled .replace ("var(--generated-ai-fix-button-background-color)" ,
71+ // super.getColorAsHex("org.eclipse.ui.workbench.INACTIVE_TAB_BG_START", "#F0F0F0"));
72+ super .getColorAsHex ("ADDITION_COLOR" , "#00ff00" ));
73+ htmlStyled = htmlStyled .replace ("var(--disabled-background-color)" ,
74+ super .getColorAsHex ("ADDITION_COLOR" , "#00ff00" ));
5575
56- private String getThemeScript () {
57- if (Preferences .getInstance ().isTest ()) {
58- return "" ;
59- }
76+ String htmlWithScripts = getReplaceAIFixScripts (htmlStyled );
6077
61- String themeScript = "var isDarkTheme = " + isDarkTheme () + ";\n " +
62- "document.body.classList.add(isDarkTheme ? 'dark' : 'light');" ;
63- return themeScript ;
64- }
78+ return htmlWithScripts ;
79+ }
80+
81+ private String getReplaceAIFixScripts (String html ) {
82+ String htmlWithGenerateFunc = html .replace ("${ideGenerateAIFix}" , getGenerateAiFixScript ());
83+ String htmlWithApplyFunc = htmlWithGenerateFunc .replace ("${ideApplyAIFix}" , getApplyAiFixScript ());
84+
85+ return htmlWithApplyFunc ;
86+ }
6587
66- @ Override
67- public String replaceCssVariables (String html ) {
68- String htmlStyled = super .replaceCssVariables (html );
69-
70- // Replace CSS variables with actual color values
71- htmlStyled = htmlStyled .replace ("var(--example-line-removed-color)" , super .getColorAsHex ("DELETION_COLOR" , "#ff0000" ));
72- htmlStyled = htmlStyled .replace ("var(--example-line-added-color)" , super .getColorAsHex ("ADDITION_COLOR" , "#00ff00" ));
88+ private String getGenerateAiFixScript () {
89+ // TODO this script is broken, does not trigger a generate
90+ return "const issueId = generateAIFixButton.getAttribute('issue-id');\n "
91+ + "const folderPath = generateAIFixButton.getAttribute('folder-path');\n "
92+ + "const filePath = generateAIFixButton.getAttribute('file-path');\n " + "console.log(filePath);\n "
93+ + "window.generateAIFix(folderPath + \" @|@\" + filePath + \" @|@\" + issueId);" ;
94+ }
95+
96+ private String getApplyAiFixScript () {
97+ return "window.applyAIFix(fixId + '|@' + filePath + '|@' + patch);\n " ;
98+ }
7399
74- return htmlStyled ;
75- }
76100}
0 commit comments