1 /*
2  * ElementIds.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.core.client;
16 
17 import com.google.gwt.aria.client.Id;
18 import com.google.gwt.dom.client.Element;
19 import com.google.gwt.user.client.ui.Widget;
20 import org.rstudio.core.client.dom.DomUtils;
21 import org.rstudio.core.client.regex.Pattern;
22 
23 public class ElementIds
24 {
25    /**
26     * Return a unique ID based on examination of existing elements. Must be assigned
27     * immediately to an element in the DOM to ensure uniqueness.
28     * @param baseId
29     * @return
30     */
getUniqueElementId(String baseId)31    public static String getUniqueElementId(String baseId)
32    {
33       String elementIdBase = getElementId(baseId);
34       String elementId = elementIdBase;
35       int counter = 0;
36 
37       // ensure uniqueness; for example, if multiple modal dialogs are displayed, make sure
38       // the OK button instances, etc., are uniquely identified
39       while (DomUtils.getElementById(elementId) != null)
40       {
41          elementId = elementIdBase + "_" + counter++;
42       }
43      return elementId;
44    }
45 
assignElementId(Element ele, String id)46    public static void assignElementId(Element ele, String id)
47    {
48       ele.setId(getUniqueElementId(id));
49    }
50 
assignElementId(Widget widget, String id)51    public static void assignElementId(Widget widget, String id)
52    {
53       assignElementId(widget.getElement(), id);
54    }
55 
getElementId(String id)56    public static String getElementId(String id)
57    {
58       return ID_PREFIX + id;
59    }
60 
getAriaElementId(String id)61    public static Id getAriaElementId(String id)
62    {
63       return Id.of(getElementId(id));
64    }
65 
isInstanceOf(Widget widget, String baseId)66    public static boolean isInstanceOf(Widget widget, String baseId)
67    {
68       return isInstanceOf(widget.getElement(), baseId);
69    }
70 
isInstanceOf(Element ele, String baseId)71    public static boolean isInstanceOf(Element ele, String baseId)
72    {
73       String actualId = ele.getId();
74       String testId = ElementIds.getElementId(baseId);
75       if (actualId == testId)
76          return true;
77 
78       // does ID match disambiguation pattern?
79       if (RE_NUMBERED_ELEMENT_ID.test(actualId))
80       {
81          String trimmedId = actualId.substring(0, actualId.lastIndexOf('_'));
82          return trimmedId == testId;
83       }
84       return false;
85    }
86 
idSafeString(String text)87    public static String idSafeString(String text)
88    {
89       // If text contains "C++" it will generate the same label as one containing
90       // plain "C", so substitute "CPP" to avoid duplicate IDs.
91       if (text.contains("C++"))
92       {
93          text = text.replaceFirst("C\\+\\+", "CPP");
94       }
95 
96       // replace all non-alphanumerics with underscores
97       String id = text.replaceAll("[^a-zA-Z0-9]", "_");
98 
99       // collapse multiple underscores to a single underscore
100       id = id.replaceAll("_+", "_");
101 
102       // clean up leading/trailing underscores
103       id = id.replaceAll("^_+", "");
104       id = id.replaceAll("_+$", "");
105 
106       // convert to lowercase and return
107       return id.toLowerCase();
108    }
109 
idFromLabel(String label)110    public static String idFromLabel(String label)
111    {
112       return ID_PREFIX + "label_" + idSafeString(label);
113    }
114 
idWithPrefix(String prefix, String id)115    public static String idWithPrefix(String prefix, String id)
116    {
117       return idSafeString(prefix) + "_" + id;
118    }
119 
120    private static final Pattern RE_NUMBERED_ELEMENT_ID = Pattern.create("^[a-zA-Z0-9_]+_\\d+$");
121 
122    public final static String ID_PREFIX = "rstudio_";
123 
124    // global list of specific IDs we assign -- we keep this list centralized in this class as a
125    // so that we can be sure an ID is not used elsewhere in the product
126    public final static String RSTUDIO_LOGO = "rstudio_logo";
127    public final static String CONSOLE_INPUT = "console_input";
128    public final static String CONSOLE_OUTPUT = "console_output";
129    public final static String DEPLOY_CONTENT = "deploy_content";
130    public final static String FIND_REPLACE_BAR = "find_replace_bar";
131    public final static String HELP_FRAME = "help_frame";
132    public final static String LOADING_SPINNER = "loading_image";
133    public final static String PLOT_IMAGE_FRAME = "plot_image_frame";
134    public final static String POPUP_COMPLETIONS = "popup_completions";
135    public final static String PREFERENCES_CONFIRM = "preferences_confirm";
136    public final static String PUBLISH_CONNECT = "publish_connect";
137    public final static String PUBLISH_DISCONNECT = "publish_disconnect";
138    public final static String PUBLISH_ITEM = "publish_item";
139    public final static String PUBLISH_RECONNECT = "publish_reconnect";
140    public final static String PUBLISH_SHOW_DEPLOYMENTS = "show_deployments";
141    public final static String SHELL_WIDGET = "shell_widget";
142    public final static String SOURCE_TEXT_EDITOR = "source_text_editor";
143    public final static String XTERM_WIDGET = "xterm_widget";
144    public final static String FILE_DIALOG_NAME_PROMPT = "file_dialog_name_prompt";
145    public final static String WORKBENCH_PANEL = "workbench_panel";
146    public final static String WORKBENCH_TAB = "workbench_tab";
147    public final static String FILE_ACCEPT_BUTTON = "file_accept";
148    public final static String FILE_CANCEL_BUTTON = "file_cancel";
149    public final static String FILE_NEW_FOLDER_BUTTON = "file_new_folder";
150    public final static String PREVIEW_BUTTON = "preview";
151    public final static String CREATE_BUTTON = "create";
152    public final static String DIALOG_YES_BUTTON = "dlg_yes";
153    public final static String DIALOG_NO_BUTTON = "dlg_no";
154    public final static String DIALOG_CANCEL_BUTTON = "dlg_cancel";
155    public final static String DIALOG_OK_BUTTON = "dlg_ok";
156    public final static String DIALOG_APPLY_BUTTON = "dlg_apply";
157    public final static String DIALOG_RETRY_BUTTON = "dlg_retry";
158    public final static String DIALOG_HOME_BUTTON = "dlg_home";
159    public final static String DIALOG_CLEAR_BUTTON = "dlg_clear";
160    public final static String SELECT_ALL_BUTTON = "select_all";
161    public final static String SELECT_NONE_BUTTON = "select_none";
162    public final static String ABOUT_MANAGE_LICENSE_BUTTON = "about_manage_license";
163    public final static String TEXT_SOURCE_BUTTON = "text_source";
164    public final static String TEXT_SOURCE_BUTTON_DROPDOWN = "text_source_dropdown";
165    public final static String EMPTY_DOC_BUTTON = "empty_doc";
166 
167    public final static String EDIT_EDITING_PREFS = "edit_editing_prefs";
168    public final static String EDIT_DISPLAY_PREFS = "edit_display_prefs";
169    public final static String EDIT_SAVING_PREFS = "edit_saving_prefs";
170    public final static String EDIT_COMPLETION_PREFS = "editing_completion_prefs";
171    public final static String EDIT_DIAGNOSTICS_PREFS = "editing_diagnostics_prefs";
172 
173    public final static String GENERAL_BASIC_PREFS = "general_basic_prefs";
174    public final static String GENERAL_GRAPHICS_PREFS = "general_graphics_prefs";
175    public final static String GENERAL_ADVANCED_PREFS = "general_advanced_prefs";
176 
177    public final static String RMARKDOWN_BASIC_PREFS = "rmarkdown_basic_prefs";
178    public final static String RMARKDOWN_ADVANCED_PREFS = "markdown_advanced_prefs";
179    public final static String RMARKDOWN_VISUAL_MODE_PREFS = "markdown_visual_mode_prefs";
180    public final static String RMARKDOWN_CITATIONS_PREFS = "markdown_citations_prefs";
181 
182    public final static String PACKAGE_MANAGEMENT_PREFS = "package_management_prefs";
183    public final static String PACKAGE_DEVELOPMENT_PREFS = "package_development_prefs";
184 
185    public final static String TERMINAL_GENERAL_PREFS = "terminal_general_prefs";
186    public final static String TERMINAL_CLOSING_PREFS = "terminal_closing_prefs";
187 
188    public final static String NEW_PROJECT_DIRECTORY = "directory_name";
189    public final static String NEW_PROJECT_TYPE = "project_type";
190    public final static String NEW_PROJECT_GIT_REPO = "git_repo";
191    public final static String NEW_PROJECT_RENV = "use_renv";
192    public final static String NEW_PROJECT_VENV = "use_venv";
193    public final static String NEW_PROJECT_VENV_PACKAGES = "use_venv_packages";
194    public final static String NEW_PROJECT_SOURCE_FILES = "source_files";
195    public final static String NEW_PROJECT_NEW_SESSION = "new_session";
196 
197    // AskSecretDialog
198    public final static String ASK_SECRET_TEXT = "ask_secret_text";
getAskSecretText()199    public static String getAskSecretText() { return getElementId(ASK_SECRET_TEXT); }
200 
201    // FindInFilesDialog
202    public final static String FIND_FILES_TEXT = "find_files_text";
getFindFilesText()203    public static String getFindFilesText() { return getElementId(FIND_FILES_TEXT); }
204    public final static String FIND_FILES_PATTERN_EXAMPLE = "find_files_pattern_example";
205    public final static String FIND_FILES_CASE = "find_files_case";
getFindFilesCase()206    public static String getFindFilesCase() { return getElementId(FIND_FILES_CASE); }
207    public final static String FIND_FILES_WHOLE_WORD = "find_files_whole_word";
getFindFilesWholeWord()208    public static String getFindFilesWholeWord() { return getElementId(FIND_FILES_WHOLE_WORD); }
209    public final static String FIND_FILES_REGEX = "find_files_regex";
getFindFilesRegex()210    public static String getFindFilesRegex() { return getElementId(FIND_FILES_REGEX); }
211 
212    // ImportFileSettingsDialog
213    public final static String IMPORT_FILE_NAME = "import_file_name";
getImportFileName()214    public static String getImportFileName() { return getElementId(IMPORT_FILE_NAME); }
215    public final static String IMPORT_FILE_ENCODING = "import_file_encoding";
getImportFileEncoding()216    public static String getImportFileEncoding() { return getElementId(IMPORT_FILE_ENCODING); }
217    public final static String IMPORT_FILE_ROW_NAMES = "import_file_row_names";
getImportFileRowNames()218    public static String getImportFileRowNames() { return getElementId(IMPORT_FILE_ROW_NAMES); }
219    public final static String IMPORT_FILE_SEPARATOR = "import_file_separator";
getImportFileSeparator()220    public static String getImportFileSeparator() { return getElementId(IMPORT_FILE_SEPARATOR); }
221    public final static String IMPORT_FILE_DECIMAL = "import_file_decimal";
getImportFileDecimal()222    public static String getImportFileDecimal() { return getElementId(IMPORT_FILE_DECIMAL); }
223    public final static String IMPORT_FILE_QUOTE = "import_file_quote";
getImportFileQuote()224    public static String getImportFileQuote() { return getElementId(IMPORT_FILE_QUOTE); }
225    public final static String IMPORT_FILE_COMMENT = "import_file_comment";
getImportFileComment()226    public static String getImportFileComment() { return getElementId(IMPORT_FILE_COMMENT); }
227    public final static String IMPORT_FILE_NA_STRINGS = "import_file_na_strings";
getImportFileNaStrings()228    public static String getImportFileNaStrings() { return getElementId(IMPORT_FILE_NA_STRINGS); }
229 
230    // NewRMarkdownDialog
231    public final static String NEW_RMD_TITLE = "new_rmd_title";
getNewRmdTitle()232    public static String getNewRmdTitle() { return getElementId(NEW_RMD_TITLE); }
233    public final static String NEW_RMD_AUTHOR = "new_rmd_author";
getNewRmdAuthor()234    public static String getNewRmdAuthor() { return getElementId(NEW_RMD_AUTHOR); }
235    public final static String NEW_RMD_TEMPLATE_LABEL = "new_rmd_template_label";
getNewRmdTemplateLabel()236    public static String getNewRmdTemplateLabel() { return getElementId(NEW_RMD_TEMPLATE_LABEL); }
237    public final static String NEW_RMD_TEMPLATE = "new_rmd_template";
getNewRmdTemplate()238    public static String getNewRmdTemplate() { return getElementId(NEW_RMD_TEMPLATE); }
239 
240    // RmdTemplateChooser
241    public final static String RMD_TEMPLATE_CHOOSER_NAME = "rmd_template_chooser_name";
getRmdTemplateChooserName()242    public static String getRmdTemplateChooserName() { return getElementId(RMD_TEMPLATE_CHOOSER_NAME); }
243 
244    // NewShinyWebApplication
245    public final static String NEW_SHINY_APP_NAME = "new_shiny_app_name";
246    public final static String NEW_SHINY_APP_SINGLE_FILE = "new_shiny_app_single_file";
247    public final static String NEW_SHINY_APP_MULTI_FILE = "new_shiny_app_multi_file";
248 
249    // Memory
250    public final static String MEMORY_PIE_MINI = "memory_pie_mini";
251    public final static String MEMORY_PIE_FULL = "memory_pie_full";
252    public final static String MEMORY_USAGE_TABLE = "memory_usage_table";
253    public final static String MEMORY_TABLE_TITLE = "memory_table_title";
254    public final static String MEMORY_DROPDOWN = "memory_dropdown";
255 
256    // TextBoxWithButton and subclasses -- prefixes for button/text/help, combined with suffixes
257    public final static String TBB_TEXT = "tbb_text";
258    public final static String TBB_BUTTON = "tbb_button";
259    public final static String TBB_CLEAR_BUTTON = "tbb_clear_button";
260    public final static String TBB_HELP = "tbb_help";
261 
262    // TextBoxWithButton and subclasses -- unique suffix added to text field, button, and help link;
263    // only has to be unique within this enum
264    public enum TextBoxButtonId
265    {
266       BUILD_SCRIPT("build_Script"),
267       CA_BUNDLE("ca_bundle"),
268       DEFAULT_WORKING_DIR("default_working_dir"),
269       ZOTERO_DATA_DIRECTORY("zotero_data_directory"),
270       EXISTING_PROJECT_DIR("existing_project_dir"),
271       FIND_IN("find_in"),
272       GIT("git"),
273       JOB_SCRIPT("job_script"),
274       JOB_WORKING_DIR("job_working_dir"),
275       ODBC_PATH("odbc_path"),
276       PACKAGE_ARCHIVE("package_archive"),
277       PDF_ROOT("pdf_root"),
278       PLUMBER_DIR("plumber_dir"),
279       PRIMARY_CRAN("primary_cran"),
280       PRO_JOB_DIR("pro_job_dir"),
281       PRO_JOB_SCRIPT("pro_job_script"),
282       PRO_NEW_SESSION_DIR("pro_new_session_dir"),
283       PROJECT_PARENT("project_parent"),
284       PROJECT_REPO_DIR("project_repo_dir"),
285       PROJECT_ROOT("project_root"),
286       PROJECT_TEMPLATE("project_template"),
287       PROJECT_TEXT_ENCODING("project_text_encoding"),
288       RMD_DIR("rmd_dir"),
289       RMD_OPTION("rmd_option"),
290       RMD_TEMPLATE_DIR("rmd_template_dir"),
291       R_VERSION("r_version"),
292       SHINY_DIR("shiny_dir"),
293       SVN("svn"),
294       TERMINAL("terminal"),
295       TEXT_ENCODING("text_encoding"),
296       UPLOAD_TARGET("upload_target"),
297       VCS_IGNORE("vcs_ignore"),
298       VCS_TERMINAL("vcs_terminal"),
299       CHOOSE_IMAGE("choose_image"),
300       PYTHON_PATH("python_path");
301 
TextBoxButtonId(String value)302       TextBoxButtonId(String value)
303       {
304          value_ = value;
305       }
306 
307       @Override
toString()308       public String toString()
309       {
310          return value_;
311       }
312 
313       private final String value_;
314    }
315 
316    // TerminalPane
317    public final static String TERMINAL_DROPDOWN_MENUBUTTON = "terminal_dropdown_menubutton";
318 
319    // GlobalToolbar
320    public final static String NEW_FILE_MENUBUTTON = "new_file_menubutton";
321    public final static String OPEN_MRU_MENUBUTTON = "open_mru_menubutton";
322    public final static String VCS_MENUBUTTON = "vcs_menubutton";
323    public final static String PANELAYOUT_MENUBUTTON = "panelayout_menubutton";
324    public final static String PROJECT_MENUBUTTON = "project_menubutton";
325    public final static String PROJECT_MENUBUTTON_TOOLBAR_SUFFIX = "toolbar";
326    public final static String PROJECT_MENUBUTTON_MENUBAR_SUFFIX = "menubar";
327 
328    // BuildPane
329    public final static String BUILD_MORE_MENUBUTTON = "build_more_menubutton";
330    public final static String BUILD_BOOKDOWN_MENUBUTTON = "build_bookdown_menubutton";
331 
332    // JobLauncherDialog
333    public final static String JOB_LAUNCHER_ENVIRONMENT = "job_launcher_environment";
getJobLauncherEnvironment()334    public static String getJobLauncherEnvironment() { return getElementId(JOB_LAUNCHER_ENVIRONMENT); }
335 
336    // JobLauncherDialogPro
337    public final static String JOB_LAUNCHER_PRO_OPTIONS = "job_launcher_pro_options";
338    public final static String JOB_LAUNCHER_PRO_ENVIRONMENT = "job_launcher_pro_environment";
339 
340    // OpenSharedProjectDialog (Pro)
341    public final static String SHARED_PROJ_MINE = "shared_proj_mine";
342    public final static String SHARED_PROJ_SHARED = "shared_proj_shared";
343 
344    // RmdTemplateOptionsWidget
345    public final static String RMD_TEMPLATE_OPTIONS_OUTPUT_FORMAT = "rmd_template_options_output_format";
getRmdTemplateOptionsOutputFormat()346    public static String getRmdTemplateOptionsOutputFormat() { return getElementId(RMD_TEMPLATE_OPTIONS_OUTPUT_FORMAT); }
347 
348    // Modal Dialogs
349    public final static String DIALOG_GLOBAL_PREFS = "dialog_global_prefs";
350 
351    // DataImport
352    public final static String DATA_IMPORT_UI_OPTIONS = "data_import_ui_options";
353    public final static String DATA_IMPORT_FILE_URL = "data_import_file_url";
getDataImportFileUrl()354    public static String getDataImportFileUrl() { return getElementId(DATA_IMPORT_FILE_URL); }
355    public final static String DATA_IMPORT_OPTIONS_FILECHOOSER = "data_import_options_filechooser";
getDataImportOptionsFilechooser()356    public static String getDataImportOptionsFilechooser() { return getElementId(DATA_IMPORT_OPTIONS_FILECHOOSER); }
357    public final static String DATA_IMPORT_CODE_PREVIEW = "data_import_code_preview";
getDataImportCodePreview()358    public static String getDataImportCodePreview() { return getElementId(DATA_IMPORT_CODE_PREVIEW); }
359    public final static String DATA_IMPORT_OPTIONS_NAME = "data_import_options_name";
getDataImportOptionsName()360    public static String getDataImportOptionsName() { return getElementId(DATA_IMPORT_OPTIONS_NAME); }
361    public final static String DATA_IMPORT_OPTIONS_SKIP = "data_import_options_skip";
getDataImportOptionsSkip()362    public static String getDataImportOptionsSkip() { return getElementId(DATA_IMPORT_OPTIONS_SKIP); }
363    public final static String DATA_IMPORT_OPTIONS_MAXROWS = "data_import_options_maxrows";
getDataImportOptionsMaxrows()364    public static String getDataImportOptionsMaxrows() { return getElementId(DATA_IMPORT_OPTIONS_MAXROWS); }
365    public final static String DATA_IMPORT_OPTIONS_DELIMITER = "data_import_options_delimiter";
getDataImportOptionsDelimiter()366    public static String getDataImportOptionsDelimiter() { return getElementId(DATA_IMPORT_OPTIONS_DELIMITER); }
367    public final static String DATA_IMPORT_OPTIONS_QUOTES = "data_import_options_quotes";
getDataImportOptionsQuotes()368    public static String getDataImportOptionsQuotes() { return getElementId(DATA_IMPORT_OPTIONS_QUOTES); }
369    public final static String DATA_IMPORT_OPTIONS_ESCAPE = "data_import_options_escape";
getDataImportOptionsEscape()370    public static String getDataImportOptionsEscape() { return getElementId(DATA_IMPORT_OPTIONS_ESCAPE); }
371    public final static String DATA_IMPORT_OPTIONS_COMMENT = "data_import_options_comment";
getDataImportOptionsComment()372    public static String getDataImportOptionsComment() { return getElementId(DATA_IMPORT_OPTIONS_COMMENT); }
373    public final static String DATA_IMPORT_OPTIONS_NA = "data_import_options_na";
getDataImportOptionsNa()374    public static String getDataImportOptionsNa() { return getElementId(DATA_IMPORT_OPTIONS_NA); }
375    public final static String DATA_IMPORT_OPTIONS_SHEET = "data_import_options_sheet";
getDataImportOptionsSheet()376    public static String getDataImportOptionsSheet() { return getElementId(DATA_IMPORT_OPTIONS_SHEET); }
377    public final static String DATA_IMPORT_OPTIONS_RANGE = "data_import_options_range";
getDataImportOptionsRange()378    public static String getDataImportOptionsRange() { return getElementId(DATA_IMPORT_OPTIONS_RANGE); }
379    public final static String DATA_IMPORT_OPTIONS_FORMAT = "data_import_options_format";
getDataImportOptionsFormat()380    public static String getDataImportOptionsFormat() { return getElementId(DATA_IMPORT_OPTIONS_FORMAT); }
381 
382    // DataImportOptionsUiCsvLocale
383    public final static String DATA_IMPORT_CSV_DATENAME = "data_import_csv_datename";
getDataImportCsvDatename()384    public static String getDataImportCsvDatename() { return getElementId(DATA_IMPORT_CSV_DATENAME); }
385    public final static String DATA_IMPORT_CSV_ENCODING = "data_import_csv_encoding";
getDataImportCsvEncoding()386    public static String getDataImportCsvEncoding() { return getElementId(DATA_IMPORT_CSV_ENCODING); }
387    public final static String DATA_IMPORT_CSV_DATE_FORMAT = "data_import_csv_date_format";
getDataImportCsvDateFormat()388    public static String getDataImportCsvDateFormat() { return getElementId(DATA_IMPORT_CSV_DATE_FORMAT); }
389    public final static String DATA_IMPORT_CSV_TIME_FORMAT = "data_import_csv_time_format";
getDataImportCsvTimeFormat()390    public static String getDataImportCsvTimeFormat() { return getElementId(DATA_IMPORT_CSV_TIME_FORMAT); }
391    public final static String DATA_IMPORT_CSV_DECIMAL_MARK = "data_import_csv_decimal_mark";
getDataImportCsvDecimalMark()392    public static String getDataImportCsvDecimalMark() { return getElementId(DATA_IMPORT_CSV_DECIMAL_MARK); }
393    public final static String DATA_IMPORT_CSV_GROUPING_MARK = "data_import_csv_grouping_mark";
getDataImportCsvGroupingMark()394    public static String getDataImportCsvGroupingMark() { return getElementId(DATA_IMPORT_CSV_GROUPING_MARK); }
395    public final static String DATA_IMPORT_CSV_TZ = "data_import_csv_tz";
getDataImportCsvTz()396    public static String getDataImportCsvTz() { return getElementId(DATA_IMPORT_CSV_TZ); }
397 
398    // AboutDialogContents
399    public final static String ABOUT_LICENSE_INFO = "about_license_info";
getAboutLicenseInfo()400    public static String getAboutLicenseInfo() { return getElementId(ABOUT_LICENSE_INFO); }
401 
402    // TextEditingTargetWidget
403    public final static String CB_SOURCE_ON_SAVE = "cb_source_on_save";
getCbSourceOnSave()404    public static String getCbSourceOnSave() { return getElementId(CB_SOURCE_ON_SAVE); }
405    public final static String TOGGLE_DOC_OUTLINE_BUTTON = "toggle_doc_outline_button";
getToggleDocOutlineButton()406    public static String getToggleDocOutlineButton() { return getElementId(TOGGLE_DOC_OUTLINE_BUTTON); }
407 
408    // AddinsToolbarButton
409    public final static String ADDINS_TOOLBAR_BUTTON = "addins_toolbar_button";
getAddinsToolbarButton()410    public static String getAddinsToolbarButton() { return getElementId(ADDINS_TOOLBAR_BUTTON); }
411 
412    // CodeSearchWidget
413    public final static String CODE_SEARCH_WIDGET = "code_search_widget";
getCodeSearchWidget()414    public static String getCodeSearchWidget() { return getElementId(CODE_SEARCH_WIDGET); }
415 
416    // EnvironmentPane
417    public final static String MB_IMPORT_DATASET = "mb_import_dataset";
getMbImportDataset()418    public static String getMbImportDataset() { return getElementId(MB_IMPORT_DATASET); }
419    public final static String MB_ENVIRONMENT_LIST = "mb_environment_list";
getMbEnvironmentList()420    public static String getMbEnvironmentList() { return getElementId(MB_ENVIRONMENT_LIST); }
421    public final static String MB_OBJECT_LIST_VIEW = "mb_object_list_view";
getMbObjectListView()422    public static String getMbObjectListView() { return getElementId(MB_OBJECT_LIST_VIEW); }
423    public final static String SW_ENVIRONMENT = "sw_environment";
getSwEnvironment()424    public static String getSwEnvironment() { return getElementId(SW_ENVIRONMENT); }
425    public final static String MB_REFRESH_OPTS = "mb_refresh_opts";
426    public final static String MB_ENV_LANGUAGE = "mb_env_language";
427    public final static String ENV_EMPTY = "env_empty";
428 
429    // HistoryPane
430    public final static String SW_HISTORY = "sw_history";
getSwHistory()431    public static String getSwHistory() { return getElementId(SW_HISTORY); }
432 
433    // GitPane
434    public final static String MB_GIT_MORE = "mb_git_more";
getMbGitMore()435    public static String getMbGitMore() { return getElementId(MB_GIT_MORE); }
436    public final static String TB_GIT_REFRESH = "tb_git_refresh";
getTbGitRefresh()437    public static String getTbGitRefresh() { return getElementId(TB_GIT_REFRESH); }
438 
439    // FileCommandToolbar
440    public final static String MB_FILES_MORE = "mb_files_more";
getMbFilesMore()441    public static String getMbFilesMore() { return getElementId(MB_FILES_MORE); }
442 
443    // PlotsToolbar
444    public final static String MB_PLOTS_EXPORT = "mb_plots_export";
getMbPlotsExport()445    public static String getMbPlotsExport() { return getElementId(MB_PLOTS_EXPORT); }
446 
447    // PackagesPane
448    public final static String SW_PACKAGES = "sw_packages";
getSwPackages()449    public static String getSwPackages() { return getElementId(SW_PACKAGES); }
450 
451    // SpellingDialog
452    public final static String SPELLING_NOT_IN_DICT= "spelling_not_in_dict";
getSpellingNotInDict()453    public static String getSpellingNotInDict() { return getElementId(SPELLING_NOT_IN_DICT); }
454    public final static String SPELLING_CHANGE_TO= "spelling_change_to";
getSpellingChangeTo()455    public static String getSpellingChangeTo() { return getElementId(SPELLING_CHANGE_TO); }
456 
457    // HelpPane
458    public final static String SW_HELP_FIND_IN_TOPIC = "sw_help_find_in_topic";
getSwHelpFindInTopic()459    public static String getSwHelpFindInTopic() { return getElementId(SW_HELP_FIND_IN_TOPIC); }
460 
461    // HelpSearchWidget
462    public final static String SW_HELP = "sw_help";
getSwHelp()463    public static String getSwHelp() { return getElementId(SW_HELP); }
464 
465    // NewRdDialog
466    public final static String NEW_RD_NAME = "new_rd_name";
getNewRdName()467    public static String getNewRdName() { return getElementId(NEW_RD_NAME); }
468    public final static String NEW_RD_TEMPLATE = "new_rd_template";
getNewRdTemplate()469    public static String getNewRdTemplate() { return getElementId(NEW_RD_TEMPLATE); }
470 
471    // SvnResolveDialog
472    public final static String SVN_RESOLVE_GROUP = "svn_resolve_group";
473    public final static String SVN_RESOLVE_MINE = "svn_resolve_mine";
474    public final static String SVN_RESOLVE_MINE_DESC = "svn_resolve_mine_desc";
475    public final static String SVN_RESOLVE_MINE_CONFLICT = "svn_resolve_mine_conflict";
476    public final static String SVN_RESOLVE_MINE_CONFLICT_DESC = "svn_resolve_mine_conflict_desc";
477    public final static String SVN_RESOLVE_THEIRS_CONFLICT = "svn_resolve_theirs_conflict";
478    public final static String SVN_RESOLVE_THEIRS_CONFLICT_DESC = "svn_resolve_theirs_conflict_desc";
479    public final static String SVN_RESOLVE_MINE_ALL = "svn_resolve_mine_all";
480    public final static String SVN_RESOLVE_MINE_ALL_DESC = "svn_resolve_mine_all_desc";
481    public final static String SVN_RESOLVE_THEIRS_ALL = "svn_resolve_theirs_all";
482    public final static String SVN_RESOLVE_THEIRS_ALL_DESC = "svn_resolve_theirs_all_desc";
483 
484    // TutorialPane
485    public final static String TUTORIAL_FRAME = "tutorial_frame";
486 
487    // ShowPublicKeyDialog
488    public final static String PUBLIC_KEY_TEXT = "public_key_text";
489    public final static String PUBLIC_KEY_LABEL = "public_key_label";
490 
491    // JobQuitControls
492    public final static String JOB_QUIT_LISTBOX = "job_quit_listbox";
getJobQuitListbox()493    public static String getJobQuitListbox() { return getElementId(JOB_QUIT_LISTBOX); }
494 
495    // RSConnect
496    public final static String RSC_SERVER_URL = "rsc_server_url";
getRscServerUrl()497    public static String getRscServerUrl() { return getElementId(RSC_SERVER_URL); }
498    public final static String RSC_ACCOUNT_LIST_LABEL = "rsc_account_list_label";
getRscAccountListLabel()499    public static String getRscAccountListLabel() { return getElementId(RSC_ACCOUNT_LIST_LABEL); }
500    public final static String RSC_ACCOUNT_LIST = "rsc_account_list";
getRscAccountList()501    public static String getRscAccountList() { return getElementId(RSC_ACCOUNT_LIST); }
502    public final static String RSC_FILES_LIST_LABEL = "rsc_files_list_label";
503 
504    // WindowFrameButton (combined with unique suffix for each quadrant
505    public final static String FRAME_MIN_BTN = "frame_min_btn";
506    public final static String FRAME_MAX_BTN = "frame_max_btn";
507    public final static String MIN_FRAME_MIN_BTN = "min_frame_min_btn";
508    public final static String MIN_FRAME_MAX_BTN = "min_frame_max_btn";
509 
510    // Visual Markdown Editing dialogs
511    public final static String VISUAL_MD_RAW_FORMAT_SELECT = "visual_md_raw_format_select";
getVisualMdRawFormatSelect()512    public static String getVisualMdRawFormatSelect() { return getElementId(VISUAL_MD_RAW_FORMAT_SELECT); }
513    public final static String VISUAL_MD_RAW_FORMAT_CONTENT = "visual_md_raw_format_content";
getVisualMdRawContent()514    public static String getVisualMdRawContent() { return getElementId(VISUAL_MD_RAW_FORMAT_CONTENT); }
515    public final static String VISUAL_MD_RAW_FORMAT_REMOVE_BUTTON = "visual_md_raw_format_remove_button";
516    public final static String VISUAL_MD_INSERT_TABLE_ROWS = "visual_md_insert_table_rows";
getVisualMdInsertTableRows()517    public static String getVisualMdInsertTableRows() { return getElementId(VISUAL_MD_INSERT_TABLE_ROWS); }
518    public final static String VISUAL_MD_INSERT_TABLE_COLUMNS = "visual_md_insert_table_columns";
getVisualMdInsertTableColumns()519    public static String getVisualMdInsertTableColumns() { return getElementId(VISUAL_MD_INSERT_TABLE_COLUMNS); }
520    public final static String VISUAL_MD_INSERT_TABLE_CAPTION = "visual_md_insert_table_caption";
getVisualMdInsertTableCaption()521    public static String getVisualMdInsertTableCaption() { return getElementId(VISUAL_MD_INSERT_TABLE_CAPTION); }
522    public final static String VISUAL_MD_INSERT_TABLE_HEADER = "visual_md_insert_table_heaeder";
523    public final static String VISUAL_MD_ATTR_REMOVE_BUTTON = "visual_md_attr_remove_button";
524    public final static String VISUAL_MD_ATTR_ID_LABEL1 = "visual_md_attr_id_label1";
getVisualMdAttrIdLabel1()525    public static String getVisualMdAttrIdLabel1() { return getElementId(VISUAL_MD_ATTR_ID_LABEL1); }
526    public final static String VISUAL_MD_ATTR_ID_LABEL2 = "visual_md_attr_id_label2";
getVisualMdAttrIdLabel2()527    public static String getVisualMdAttrIdLabel2() { return getElementId(VISUAL_MD_ATTR_ID_LABEL2); }
528    public final static String VISUAL_MD_ATTR_ID_GENERATE = "visual_md_attr_id_generate";
529    public final static String VISUAL_MD_ATTR_ID = "visual_md_attr_id";
getVisualMdAttrId()530    public static String getVisualMdAttrId() { return getElementId(VISUAL_MD_ATTR_ID); }
531    public final static String VISUAL_MD_ATTR_CLASSES_LABEL1 = "visual_md_attr_classes_label1";
getVisualMdAttrClassesLabel1()532    public static String getVisualMdAttrClassesLabel1() { return getElementId(VISUAL_MD_ATTR_CLASSES_LABEL1); }
533    public final static String VISUAL_MD_ATTR_CLASSES_LABEL2 = "visual_md_attr_classes_label2";
getVisualMdAttrClassesLabel2()534    public static String getVisualMdAttrClassesLabel2() { return getElementId(VISUAL_MD_ATTR_CLASSES_LABEL2); }
535    public final static String VISUAL_MD_ATTR_CLASSES = "visual_md_attr_classes";
getVisualMdAttrClasses()536    public static String getVisualMdAttrClasses() { return getElementId(VISUAL_MD_ATTR_CLASSES); }
537    public final static String VISUAL_MD_ATTR_STYLE_LABEL1 = "visual_md_attr_style_label1";
getVisualMdAttrStyleLabel1()538    public static String getVisualMdAttrStyleLabel1() { return getElementId(VISUAL_MD_ATTR_STYLE_LABEL1); }
539    public final static String VISUAL_MD_ATTR_STYLE_LABEL2 = "visual_md_attr_style_label2";
getVisualMdAttrStyleLabel2()540    public static String getVisualMdAttrStyleLabel2() { return getElementId(VISUAL_MD_ATTR_STYLE_LABEL2); }
541    public final static String VISUAL_MD_ATTR_STYLE = "visual_md_attr_style";
getVisualMdAttrStyle()542    public static String getVisualMdAttrStyle() { return getElementId(VISUAL_MD_ATTR_STYLE); }
543    public final static String VISUAL_MD_ATTR_KEYVALUE_LABEL1 = "visual_md_attr_keyvalue_label1";
getVisualMdAttrKeyValueLabel1()544    public static String getVisualMdAttrKeyValueLabel1() { return getElementId(VISUAL_MD_ATTR_KEYVALUE_LABEL1); }
545    public final static String VISUAL_MD_ATTR_KEYVALUE_LABEL2 = "visual_md_attr_keyvalue_label2";
getVisualMdAttrKeyValueLabel2()546    public static String getVisualMdAttrKeyValueLabel2() { return getElementId(VISUAL_MD_ATTR_KEYVALUE_LABEL2); }
547    public final static String VISUAL_MD_ATTR_KEYVALUE = "visual_md_attr_keyvalue";
getVisualMdAttrKeyValue()548    public static String getVisualMdAttrKeyValue() { return getElementId(VISUAL_MD_ATTR_KEYVALUE); }
549    public final static String VISUAL_MD_CITATION_ID = "visual_md_citation_id";
getVisualMdCitationId()550    public static String getVisualMdCitationId() { return getElementId(VISUAL_MD_CITATION_ID); }
551    public final static String VISUAL_MD_CITATION_LOCATOR = "visual_md_citation_locator";
getVisualMdCitationLocator()552    public static String getVisualMdCitationLocator() { return getElementId(VISUAL_MD_CITATION_LOCATOR); }
553    public final static String VISUAL_MD_LIST_TYPE = "visual_md_list_type";
getVisualMdListType()554    public static String getVisualMdListType() { return getElementId(VISUAL_MD_LIST_TYPE); }
555    public final static String VISUAL_MD_LIST_ORDER = "visual_md_list_order";
getVisualMdListOrder()556    public static String getVisualMdListOrder() { return getElementId(VISUAL_MD_LIST_ORDER); }
557    public final static String VISUAL_MD_LIST_NUMBER_STYLE = "visual_md_list_number_style";
getVisualMdListNumberStyle()558    public static String getVisualMdListNumberStyle() { return getElementId(VISUAL_MD_LIST_NUMBER_STYLE); }
559    public final static String VISUAL_MD_LIST_NUMBER_DELIM = "visual_md_list_number_delim";
getVisualMdListNumberDelim()560    public static String getVisualMdListNumberDelim() { return getElementId(VISUAL_MD_LIST_NUMBER_DELIM); }
561    public final static String VISUAL_MD_LIST_NUMBER_DELIM_NOTE = "visual_md_list_number_delim_note";
getVisualMdListNumberDelimNote()562    public static String getVisualMdListNumberDelimNote() { return getElementId(VISUAL_MD_LIST_NUMBER_DELIM_NOTE); }
563    public final static String VISUAL_MD_LIST_INSERT_CITE_ID = "visual_md_insert_cite_id";
getVisualMdInsertCiteId()564    public static String getVisualMdInsertCiteId() { return getElementId(VISUAL_MD_LIST_INSERT_CITE_ID); }
565    public final static String VISUAL_MD_LIST_INSERT_CITE_PREVIEW = "visual_md_insert_cite_preview";
getVisualMdInsertCitePreview()566    public static String getVisualMdInsertCitePreview() { return getElementId(VISUAL_MD_LIST_INSERT_CITE_PREVIEW); }
567    public final static String VISUAL_MD_LIST_INSERT_CITE_BIB = "visual_md_insert_cite_bib";
getVisualMdInsertCiteBib()568    public static String getVisualMdInsertCiteBib() { return getElementId(VISUAL_MD_LIST_INSERT_CITE_BIB); }
569    public final static String VISUAL_MD_LIST_INSERT_CITE_CREATE_BIB = "visual_md_insert_cite_create_bib";
getVisualMdInsertCiteCreateBib()570    public static String getVisualMdInsertCiteCreateBib() { return getElementId(VISUAL_MD_LIST_INSERT_CITE_CREATE_BIB); }
571    public final static String VISUAL_MD_LIST_INSERT_CITE_CREATE_BIB_TYPE = "visual_md_insert_cite_create_bib_type";
getVisualMdInsertCiteCreateBibType()572    public static String getVisualMdInsertCiteCreateBibType() { return getElementId(VISUAL_MD_LIST_INSERT_CITE_CREATE_BIB_TYPE); }
573 
574    public final static String VISUAL_MD_LIST_TIGHT = "visual_md_ordered_list_tight";
575    public final static String VISUAL_MD_IMAGE_TAB_IMAGE = "visual_md_image_tab_image";
576    public final static String VISUAL_MD_IMAGE_WIDTH = "visual_md_image_width";
577    public final static String VISUAL_MD_IMAGE_HEIGHT = "visual_md_image_height";
578    public final static String VISUAL_MD_IMAGE_UNITS = "visual_md_image_units";
579    public final static String VISUAL_MD_IMAGE_LOCK_RATIO = "visual_md_image_lock_ratio";
580    public final static String VISUAL_MD_IMAGE_TITLE = "visual_md_image_title";
581    public final static String VISUAL_MD_IMAGE_ALT = "visual_md_image_alt";
582    public final static String VISUAL_MD_IMAGE_LINK_TO = "visual_md_image_link_to";
583    public final static String VISUAL_MD_IMAGE_TAB_ATTRIBUTES = "visual_md_image_tab_attributes";
584    public final static String VISUAL_MD_LINK_REMOVE_LINK_BUTTON = "visual_md_link_remove_link_button";
585    public final static String VISUAL_MD_LINK_TAB_LINK = "visual_md_link_tab_link";
586    public final static String VISUAL_MD_LINK_TYPE = "visual_md_link_type";
587    public final static String VISUAL_MD_LINK_HREF = "visual_md_link_href";
588    public final static String VISUAL_MD_LINK_SELECT_HEADING = "visual_md_link_select_heading";
589    public final static String VISUAL_MD_LINK_SELECT_ID = "visual_md_link_select_id";
590    public final static String VISUAL_MD_LINK_TEXT = "visual_md_link_text";
591    public final static String VISUAL_MD_LINK_TITLE = "visual_md_link_title";
592    public final static String VISUAL_MD_LINK_TAB_ATTRIBUTES = "visual_md_link_tab_attributes";
593    public final static String VISUAL_MD_CODE_BLOCK_TAB_LANGUAGE = "visual_md_code_block_tab_language";
594    public final static String VISUAL_MD_CODE_BLOCK_TAB_ATTRIBUTES = "visual_md_code_block_tab_attributes";
595    public final static String VISUAL_MD_CODE_BLOCK_LANG_LABEL1 = "visual_md_code_block_lang_label1";
596    public final static String VISUAL_MD_CODE_BLOCK_LANG_LABEL2 = "visual_md_code_block_lang_label2";
597    public final static String VISUAL_MD_CODE_BLOCK_LANG = "visual_md_code_block_tab_lang";
598 
599    // ProgressDialog
600    public final static String PROGRESS_TITLE_LABEL = "progress_title_label";
601 
602    // AccessibilityPreferencesPane
603    public final static String A11Y_GENERAL_PREFS = "a11y_general_prefs";
604    public final static String A11Y_ANNOUNCEMENTS_PREFS = "a11y_announcements_prefs";
605 
606    // SatelliteWindow
607    public final static String SATELLITE_PANEL = "satellite_panel";
608 
609    // CommandPalette
610    public final static String COMMAND_PALETTE_LIST = "command_palette_list";
611    public final static String COMMAND_PALETTE_SEARCH = "command_palette_search";
612    public final static String COMMAND_ENTRY_PREFIX = "command_entry_";
613 
614    // Right-click tab context menus
615    public final static String FEATURE_TAB_CONTEXT = "feature_tab_context";
616    public final static String EDITOR_TAB_CONTEXT = "editor_tab_context";
617    public final static String GIT_TAB_CONTEXT = "git_tab_context";
618    public final static String SVN_TAB_CONTEXT = "svn_tab_context";
619 
620    // Right-click tab context menus commands
621    public final static String TAB_CLOSE = "tab_close";
622    public final static String TAB_RENAME_FILE = "tab_rename_file";
623    public final static String TAB_COPY_PATH = "tab_copy_path";
624    public final static String TAB_SET_WORKING_DIR = "tab_set_working_dir";
625    public final static String TAB_SET_FILES_PANE = "tab_set_files_pane";
626    public final static String TAB_CLOSE_ALL = "tab_close_all";
627    public final static String TAB_CLOSE_OTHERS = "tab_close_others";
628 
629    // Jobs pane
630    public final static String JOB_STOP = "job_stop";
631    public final static String JOB_REPLAY = "job_replay";
632 
633    // OpenProjectDialog
634    public final static String OP_NEW_SESSION = "op_new_session";
635 
636    // FilePathToolbar
637    public final static String FP_SELECT_ALL = "fp_select_all";
638 
639    // ChooseEncodingDialog
640    public final static String ENC_SHOW_ALL = "enc_show_all";
641    public final static String ENC_SET_DEFAULT = "enc_set_default";
642 }