Skip to content

Commit e9c85d2

Browse files
authored
feat: enhance HTML settings page with full IDE configuration support [IDE-1625] (#348)
* feat: enhance HTML settings page with full IDE configuration support - Add comprehensive IdeConfigData class with typed nested structures for all settings - Implement retry logic (2 attempts, 2s delay) for loading LS HTML before fallback - Add FolderConfig support with additionalEnv, additionalParameters, and scanCommandConfig - Implement auth token notification to HTML page after successful authentication - Fix UI hang by making updateConfiguration async in performOk - Fix 10s timeout by checking LS connection before executeCommand in getConfigHtml - Improve button styling with proper colors and contrast in BaseHtmlProvider - Add static instance tracking for auth token callback from hasAuthenticated event * refactor: fix PMD code quality issues in HTML settings - Extract duplicate string literal "#FFFFFF" to constant in BaseHtmlProvider - Mark static instance field as volatile for thread safety in HTMLSettingsPreferencePage - Extract loop logic into helper methods to avoid object instantiation in loops - Replace reference equality (==) with equals() for object comparison - Isolate null assignment in dedicated clearInstance() method * refactor: address code review feedback for HTML settings implementation - Replace fully qualified class name with import for HTMLSettingsPreferencePage - Replace hardcoded command ID strings with constants from IHandlerCommands - Fix theme constant usage: use proper Eclipse workbench colors instead of hyperlink colors for buttons - Convert IdeConfigData and inner classes to Java records (eliminates ~300 lines of boilerplate) - Remove unnecessary clearInstance() method in HTMLSettingsPreferencePage - Add synchronization to prevent race conditions between login and logout operations * fix: suppress PMD warnings for intentional patterns in HTMLSettingsPreferencePage * fix: additionalParam type
1 parent 574239f commit e9c85d2

File tree

8 files changed

+520
-399
lines changed

8 files changed

+520
-399
lines changed

plugin/src/main/java/io/snyk/eclipse/plugin/html/BaseHtmlProvider.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public class BaseHtmlProvider {
8484
// Default fallback colors
8585
private static final String DEFAULT_SECTION_BG_COLOR = "#F0F0F0";
8686
private static final String DEFAULT_BORDER_COLOR = "#CCCCCC";
87+
private static final String DEFAULT_WHITE_COLOR = "#FFFFFF";
8788

8889
public String getCss() {
8990
return "";
@@ -180,8 +181,8 @@ public String replaceCssVariables(String html, boolean useRelativeFontSize) {
180181
htmlStyled = htmlStyled.replace(CSS_VAR_TEXT_COLOR, getColorAsHex(THEME_ACTIVE_TAB_SELECTED_TEXT, "#000000"));
181182
htmlStyled = htmlStyled.replace(CSS_VAR_DIMMED_TEXT_COLOR, getColorAsHex(THEME_ACTIVE_TAB_TEXT, "#4F5456"));
182183

183-
htmlStyled = htmlStyled.replace(CSS_VAR_IDE_BACKGROUND_COLOR, getColorAsHex(THEME_ACTIVE_NOFOCUS_TAB_BG, "#FFFFFF"));
184-
htmlStyled = htmlStyled.replace(CSS_VAR_BACKGROUND_COLOR, getColorAsHex(THEME_ACTIVE_TAB_BG_END, "#FFFFFF"));
184+
htmlStyled = htmlStyled.replace(CSS_VAR_IDE_BACKGROUND_COLOR, getColorAsHex(THEME_ACTIVE_NOFOCUS_TAB_BG, DEFAULT_WHITE_COLOR));
185+
htmlStyled = htmlStyled.replace(CSS_VAR_BACKGROUND_COLOR, getColorAsHex(THEME_ACTIVE_TAB_BG_END, DEFAULT_WHITE_COLOR));
185186
htmlStyled = htmlStyled.replace(CSS_VAR_CODE_BACKGROUND_COLOR,
186187
getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR));
187188
htmlStyled = htmlStyled.replace(CSS_VAR_BUTTON_COLOR,
@@ -201,15 +202,17 @@ public String replaceCssVariables(String html, boolean useRelativeFontSize) {
201202
getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR));
202203
htmlStyled = htmlStyled.replace(CSS_VAR_INPUT_BACKGROUND_COLOR,
203204
getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR));
204-
htmlStyled = htmlStyled.replace(CSS_VAR_FOCUS_COLOR, getColorAsHex(THEME_ACTIVE_HYPERLINK, "#0000FF"));
205+
htmlStyled = htmlStyled.replace(CSS_VAR_FOCUS_COLOR, getColorAsHex(THEME_ACTIVE_TAB_KEYLINE, DEFAULT_BORDER_COLOR));
205206

206207
// Replace VSCode CSS variables used in LS-served HTML (settings page)
207208
String textColor = getColorAsHex(THEME_ACTIVE_TAB_SELECTED_TEXT, "#000000");
208-
String bgColor = getColorAsHex(THEME_ACTIVE_TAB_BG_END, "#FFFFFF");
209+
String bgColor = getColorAsHex(THEME_ACTIVE_TAB_BG_END, DEFAULT_WHITE_COLOR);
209210
String inputBgColor = getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR);
210211
String borderColor = getColorAsHex(THEME_ACTIVE_TAB_KEYLINE, DEFAULT_BORDER_COLOR);
211-
String focusColor = getColorAsHex(THEME_ACTIVE_HYPERLINK, "#0000FF");
212+
String focusColor = getColorAsHex(THEME_ACTIVE_TAB_KEYLINE, DEFAULT_BORDER_COLOR);
212213
String buttonBgColor = getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR);
214+
String buttonFgColor = getColorAsHex(THEME_ACTIVE_TAB_TEXT, "#000000");
215+
String buttonHoverBgColor = getColorAsHex(THEME_ACTIVE_NOFOCUS_TAB_BG, "#E0E0E0");
213216
String sectionBgColor = getColorAsHex(THEME_INACTIVE_TAB_BG, DEFAULT_SECTION_BG_COLOR);
214217

215218
htmlStyled = htmlStyled.replace(VSCODE_VAR_FONT_FAMILY_PREFIX, textColor + VSCODE_VAR_SUFFIX);
@@ -224,11 +227,11 @@ public String replaceCssVariables(String html, boolean useRelativeFontSize) {
224227
htmlStyled = htmlStyled.replace(VSCODE_VAR_INPUT_BACKGROUND_PREFIX, inputBgColor + VSCODE_VAR_SUFFIX);
225228
htmlStyled = htmlStyled.replace(VSCODE_VAR_EDITOR_INACTIVE_SELECTION_BG_PREFIX, sectionBgColor + VSCODE_VAR_SUFFIX);
226229
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_BACKGROUND_PREFIX, buttonBgColor + VSCODE_VAR_SUFFIX);
227-
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_FOREGROUND_PREFIX, textColor + VSCODE_VAR_SUFFIX);
228-
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_HOVER_BG_PREFIX, buttonBgColor + VSCODE_VAR_SUFFIX);
229-
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_SECONDARY_BG_PREFIX, buttonBgColor + VSCODE_VAR_SUFFIX);
230+
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_FOREGROUND_PREFIX, buttonFgColor + VSCODE_VAR_SUFFIX);
231+
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_HOVER_BG_PREFIX, buttonHoverBgColor + VSCODE_VAR_SUFFIX);
232+
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_SECONDARY_BG_PREFIX, sectionBgColor + VSCODE_VAR_SUFFIX);
230233
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_SECONDARY_FOREGROUND_PREFIX, textColor + VSCODE_VAR_SUFFIX);
231-
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_SECONDARY_HOVER_BG_PREFIX, buttonBgColor + VSCODE_VAR_SUFFIX);
234+
htmlStyled = htmlStyled.replace(VSCODE_VAR_BUTTON_SECONDARY_HOVER_BG_PREFIX, inputBgColor + VSCODE_VAR_SUFFIX);
232235
htmlStyled = htmlStyled.replace(VSCODE_VAR_LIST_HOVER_BG_PREFIX, sectionBgColor + VSCODE_VAR_SUFFIX);
233236
htmlStyled = htmlStyled.replace(VSCODE_VAR_INPUT_BORDER_PREFIX, borderColor + VSCODE_VAR_SUFFIX);
234237
htmlStyled = htmlStyled.replace(VSCODE_VAR_PANEL_BORDER_PREFIX, borderColor + VSCODE_VAR_SUFFIX);

0 commit comments

Comments
 (0)