ru.bitel.bgbilling.client.util

## Class ClientUtils

- java.lang.Object
- - ru.bitel.bgbilling.client.util.ClientUtils

-     public class ClientUtils
      extends java.lang.Object

  Клиентский утилс. Работа с GUI, взаимодействие с сервером.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static javax.swing.ImageIcon` | `nullIcon`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClientUtils()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static int` | `addComponentToPanel(javax.swing.JPanel panel, int gridy, java.awt.Component[][] components, boolean addBottom)`
    `static void` | `addEnterDoClickDelegate(java.awt.Component comp, javax.swing.AbstractButton button)` Назначение делегации клика кнопки от любой компоненты при нажатии на него ENTER.
    `static void` | `addOnlyOneShownListener(java.awt.Component... comp)`
    `static void` | `addOpenAction(java.awt.Component comp, java.awt.event.AWTEventListener eventListener)` Добавляет на компонент слушатель 1) даблклика и 2) нажатия Enter.
    `static void` | `addShowCodeListener(bitel.billing.module.common.table.BGTable table)`
    `static void` | `addShowCodeListener(javax.swing.JList<?> list)`
    `static void` | `addShowCodeListener(bitel.billing.module.common.table.tree.JTreeTable dataTree, bitel.billing.module.common.table.tree.DefaultTreeTableModel<?> model)`
    `static void` | `buildComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox, org.w3c.dom.Node node, java.lang.String selected)`
    `static void` | `buildComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox, org.w3c.dom.Node node, java.lang.String selected, java.lang.String idName, java.lang.String titleName)`
    `static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem>` | `buildComboBox(org.w3c.dom.Node node, java.lang.String selected)`
    `static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem>` | `buildComboBox(org.w3c.dom.Node node, java.lang.String selected, java.lang.String idName, java.lang.String titleName)`
    `static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem>` | `buildComboBoxWithDefault(org.w3c.dom.Node node, java.lang.String selected)`
    `static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem>` | `buildComboBoxWithDefault(org.w3c.dom.Node node, java.lang.String selected, java.lang.String defaultName)`
    `static void` | `buildList(bitel.billing.module.common.BGControlPanelListSelect list, org.w3c.dom.Node node)`
    `static void` | `buildList(bitel.billing.module.common.BGControlPanelListSelect list, org.w3c.dom.Node node, java.lang.String defaultValue)`
    `static void` | `buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList, javax.swing.DefaultListModel<bitel.billing.module.common.ListItem> model, org.w3c.dom.Node node, java.lang.String defaultValue)`
    `static void` | `buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList, java.util.List<? extends ListItem> list)`
    `static void` | `buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList, org.w3c.dom.Node node)`
    `static void` | `buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList, org.w3c.dom.Node node, java.lang.String defaultValue)`
    `static java.util.List<java.lang.String>` | `buildList(org.w3c.dom.Node node)` Собирает обычный java.util.List из атрибутов title.
    `static void` | `buildMultiList(javax.swing.JList<bitel.billing.module.common.ListItem> jList, javax.swing.DefaultListModel<bitel.billing.module.common.ListItem> model, org.w3c.dom.Node node, java.util.List<java.lang.String> defaultValues)`
    `static boolean` | `checkStatus(org.w3c.dom.Document doc)`
    `static void` | `checkValues(javax.swing.JTextField tf, int minValue, int maxValue)` Делает некоторые действия с текстом в поле. 1) преобразует цифры в последовательности (?)
    `static boolean` | `confirm(java.lang.String message, java.lang.String title)`
    `static boolean` | `confirmDelete(java.lang.Object what)`
    `static void` | `exec(java.lang.String command)`
    `static void` | `expandTree(javax.swing.JTree tree, javax.swing.tree.DefaultMutableTreeNode start)` Разворачивание всего дерева начиная с указанного узла.
    `static org.w3c.dom.Document` | `getCacheDocument(org.w3c.dom.Document doc, java.lang.String key)`
    `static java.lang.String` | `getComponentKey(java.awt.Component c, java.lang.String suffix)` Получает из указанного компонента его ключ текстовый, чтобы сохранить в конфиге юзера, например, какие-то данные о нём.
    `static java.util.List<java.lang.String>` | `getExpandedTreeNodeList(javax.swing.JTree tree, java.lang.String pathdelim)` Список развёрнутых узлов в дереве в виде path-ов, для сохранения перед обновлением и последущего восстановления.
    `static javax.swing.ImageIcon` | `getIcon(java.lang.String name)` Получение стандартной иконки, из стандартной папки (в наших терминах - "пакаге") /img/.
    `static javax.swing.ImageIcon` | `getIcon(java.lang.String packageicon, java.lang.String name, boolean nonNull)` Получение любой иконки, из любой папки ("packageicon"), нужна была эта функция, чтобы из плагина иконки тягать, а не только из /img/.
    `static javax.swing.ImageIcon` | `getIconByPath(java.lang.String path, boolean nonNull)` Получение иконки по пути.
    `static java.lang.String` | `getIdFromComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo)`
    `static java.lang.String` | `getIdFromList(javax.swing.JList<bitel.billing.module.common.ListItem> list)`
    `static java.lang.String` | `getIdFromTable(bitel.billing.module.common.table.BGTable table, int column)`
    `static java.util.List<IdTitle>` | `getList(org.w3c.dom.Node node)` Специальный метод для наполнения новых контролов через старые акшены.
    `static java.lang.String` | `getListSelectedItemtoString(javax.swing.JList<bitel.billing.module.common.ListItem> list)`
    `static java.io.File` | `getLocalSettingFolder()`
    `static org.w3c.dom.Document` | `getModuleDoc(java.lang.Class<?> clazz)`
    `static org.w3c.dom.Document` | `getModuleDoc(java.lang.String rb_name)`
    `static java.lang.String` | `getRBName(java.lang.Class<?> clazz)`
    `static java.lang.String` | `getRBName(java.lang.Object obj)`
    `static java.lang.String` | `getRowId(bitel.billing.module.common.table.BGTable table)`
    `static java.lang.String` | `getRowId(bitel.billing.module.common.table.BGTable table, java.lang.String msg, java.lang.String col)`
    `static java.lang.String` | `getRowIdList(bitel.billing.module.common.table.BGTable table, java.lang.String col, java.lang.String msg)` Список айдишников (через запятую) выделенных строк в таблице.
    `static boolean` | `getStatus(java.awt.Component component, org.w3c.dom.Document doc)`
    `static java.lang.String` | `getValueFromResourceBundle(java.lang.String resourceBundleName, java.lang.String key)`
    `static java.lang.String` | `getValueFromResourceBundle(java.lang.String resourceBundleName, java.lang.String key, java.lang.String defaultValue)`
    `static boolean` | `isCtrlI(java.awt.event.KeyEvent e)`
    `static java.lang.String` | `linesToString(org.w3c.dom.Element node)`
    `static void` | `openBrowser(java.net.URI uri)` Открыть в дефолтном браузере системном.
    `static void` | `openFile(java.io.File file)` Открыть файл в дефолтном приложении системном.
    `static void` | `openTelnet(java.lang.String host, int port)`
    `static void` | `openTerminal(java.lang.String cmd)`
    `static void` | `removeFromComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox, java.lang.String value)`
    `static void` | `saveBinaryFile(byte[] bytes, java.io.File file, java.lang.String ext)` Сохраняет байты в файл с расширением.
    `static void` | `saveBinaryFile(java.io.InputStream is, java.io.File file, java.lang.String ext)` То же самое что `saveBinaryFile(byte[], File, String)` но с InputStream, для длинных файлов.
    `static void` | `saveHtmlFile(java.lang.String text, java.io.File file)` Сохраняет текст с содержимым html в файл.
    `static void` | `saveTextFile(java.lang.String text, java.io.File file, java.lang.String ext)` Сохраняет текст в файл с расширением.
    `static boolean` | `setComboBoxSelection(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo, int selectedId)`
    `static boolean` | `setComboBoxSelection(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo, java.lang.Object selectedId)`
    `static void` | `setExpandedTreeNodeList(javax.swing.JTree tree, java.util.List<java.lang.String> expandedNodes, java.lang.String pathdelim)` Восстановление развёрнутости узлов-path, сохранённых функцией getExpandedTreeNodeList.
    `static void` | `setListSelection(javax.swing.JList<? extends IdTitle> list, int selectedId)`
    `static void` | `setListSelection(javax.swing.JList<bitel.billing.module.common.ListItem> list, java.util.List<java.lang.Integer> selectedIds)`
    `static void` | `setListSelection(javax.swing.JList<bitel.billing.module.common.ListItem> list, java.lang.String selected_id)`
    `static void` | `showErrorMessageDialog(java.lang.Exception e)`
    `static void` | `showErrorMessageDialog(java.lang.String message)`
    `static void` | `showErrorMessageDialog(java.lang.String message, java.lang.String title)`
    `static void` | `showErrorMessageDialog(java.lang.Throwable e)`
    `static void` | `showMessageDialog(java.lang.String message)`
    `static void` | `showMessageDialog(java.lang.String message, java.lang.String title)`
    `static java.awt.Window` | `showWaitWindow(java.lang.String message)` Создаётся окошечко с сообщением и крутилкой.
    `static void` | `warning(java.lang.String message, java.lang.String title)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### nullIcon

          public static final javax.swing.ImageIcon nullIcon

  - ### Constructor Detail

    - #### ClientUtils

          public ClientUtils()

  - ### Method Detail

    - #### confirm

          public static boolean confirm(java.lang.String message,
                                        java.lang.String title)

    - #### confirmDelete

          public static boolean confirmDelete(java.lang.Object what)

    - #### showMessageDialog

          public static void showMessageDialog(java.lang.String message)

    - #### showMessageDialog

          public static void showMessageDialog(java.lang.String message,
                                               java.lang.String title)

    - #### warning

          public static void warning(java.lang.String message,
                                     java.lang.String title)

    - #### showErrorMessageDialog

          public static void showErrorMessageDialog(java.lang.String message,
                                                    java.lang.String title)

    - #### showErrorMessageDialog

          public static void showErrorMessageDialog(java.lang.String message)

    - #### showErrorMessageDialog

          public static void showErrorMessageDialog(java.lang.Exception e)

    - #### showErrorMessageDialog

          public static void showErrorMessageDialog(java.lang.Throwable e)

    - #### checkStatus

          public static boolean checkStatus(org.w3c.dom.Document doc)

    - #### getStatus

          public static boolean getStatus(java.awt.Component component,
                                          org.w3c.dom.Document doc)

    - #### getIcon

          public static javax.swing.ImageIcon getIcon(java.lang.String name)

      Получение стандартной иконки, из стандартной папки (в наших терминах - "пакаге") /img/. Раньше была только она, теперь она так же называется для обратной совместимости.
      Parameters:
        `name` - имя иконки
      Returns:
        ИмейджИкон

    - #### getIconByPath

          public static javax.swing.ImageIcon getIconByPath(java.lang.String path,
                                                            boolean nonNull)

      Получение иконки по пути. Путь можно указывать без .png|.gif, но рекомендуется полностью.
      Parameters:
        `path` -
        `nonNull` - если иконка не найдена - возвращать null или пустую иконку.
      Returns:

    - #### getIcon

          public static javax.swing.ImageIcon getIcon(java.lang.String packageicon,
                                                      java.lang.String name,
                                                      boolean nonNull)

      Получение любой иконки, из любой папки ("packageicon"), нужна была эта функция, чтобы из плагина иконки тягать, а не только из /img/. Иконки тягаются по именам, кешируются по пакет+имя. Иконки - gif или png. Если не найдено - в зависимости от nonNull вернётся нулевая или пустая иконка.
      Parameters:
        `packageicon` - пакаге (или папка) иконки, может быть как в виде abc/de/fghi, так и abc.de.fghi
        `name` - имя иконки
        `nonNull` - если иконка не найдена - вернуть пустой объект или null
      Returns:
        ИмейджИкон

    - #### getRBName

          public static java.lang.String getRBName(java.lang.Object obj)

    - #### getRBName

          public static java.lang.String getRBName(java.lang.Class<?> clazz)

    - #### getRowId

          public static java.lang.String getRowId(bitel.billing.module.common.table.BGTable table)

    - #### getRowId

          public static java.lang.String getRowId(bitel.billing.module.common.table.BGTable table,
                                                  java.lang.String msg,
                                                  java.lang.String col)

    - #### buildList

          public static void buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList,
                                       org.w3c.dom.Node node)

    - #### buildList

          public static void buildList(bitel.billing.module.common.BGControlPanelListSelect list,
                                       org.w3c.dom.Node node)

    - #### buildList

          public static void buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList,
                                       org.w3c.dom.Node node,
                                       java.lang.String defaultValue)

    - #### buildList

          public static void buildList(bitel.billing.module.common.BGControlPanelListSelect list,
                                       org.w3c.dom.Node node,
                                       java.lang.String defaultValue)

    - #### buildList

          public static void buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList,
                                       javax.swing.DefaultListModel<bitel.billing.module.common.ListItem> model,
                                       org.w3c.dom.Node node,
                                       java.lang.String defaultValue)

    - #### buildMultiList

          public static void buildMultiList(javax.swing.JList<bitel.billing.module.common.ListItem> jList,
                                            javax.swing.DefaultListModel<bitel.billing.module.common.ListItem> model,
                                            org.w3c.dom.Node node,
                                            java.util.List<java.lang.String> defaultValues)

    - #### buildList

          public static java.util.List<java.lang.String> buildList(org.w3c.dom.Node node)

      Собирает обычный java.util.List из атрибутов title.
      Parameters:
        `node` -

    - #### buildList

          public static void buildList(javax.swing.JList<bitel.billing.module.common.ListItem> jList,
                                       java.util.List<? extends ListItem> list)

    - #### setListSelection

          public static void setListSelection(javax.swing.JList<bitel.billing.module.common.ListItem> list,
                                              java.lang.String selected_id)

    - #### setListSelection

          public static void setListSelection(javax.swing.JList<bitel.billing.module.common.ListItem> list,
                                              java.util.List<java.lang.Integer> selectedIds)

    - #### setListSelection

          public static void setListSelection(javax.swing.JList<? extends IdTitle> list,
                                              int selectedId)

    - #### buildComboBox

          public static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem> buildComboBox(org.w3c.dom.Node node,
                                                                                                                 java.lang.String selected,
                                                                                                                 java.lang.String idName,
                                                                                                                 java.lang.String titleName)

    - #### buildComboBox

          public static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem> buildComboBox(org.w3c.dom.Node node,
                                                                                                                 java.lang.String selected)

    - #### buildComboBoxWithDefault

          public static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem> buildComboBoxWithDefault(org.w3c.dom.Node node,
                                                                                                                            java.lang.String selected)

    - #### buildComboBoxWithDefault

          public static javax.swing.DefaultComboBoxModel<bitel.billing.module.common.ComboBoxItem> buildComboBoxWithDefault(org.w3c.dom.Node node,
                                                                                                                            java.lang.String selected,
                                                                                                                            java.lang.String defaultName)

    - #### buildComboBox

          public static void buildComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox,
                                           org.w3c.dom.Node node,
                                           java.lang.String selected)

    - #### buildComboBox

          public static void buildComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox,
                                           org.w3c.dom.Node node,
                                           java.lang.String selected,
                                           java.lang.String idName,
                                           java.lang.String titleName)

    - #### setComboBoxSelection

          public static boolean setComboBoxSelection(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo,
                                                     int selectedId)

    - #### setComboBoxSelection

          public static boolean setComboBoxSelection(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo,
                                                     java.lang.Object selectedId)

    - #### getIdFromComboBox

          public static java.lang.String getIdFromComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> combo)

    - #### getRowIdList

          public static java.lang.String getRowIdList(bitel.billing.module.common.table.BGTable table,
                                                      java.lang.String col,
                                                      java.lang.String msg)

      Список айдишников (через запятую) выделенных строк в таблице.
      Parameters:
        `table` - таблица
        `col` - имя столбца нужного (например, "id")
        `msg` - сообщение, если ни одного нет выбранного.
      Returns:
        строка с айдишниками через запятую.

    - #### linesToString

          public static java.lang.String linesToString(org.w3c.dom.Element node)

    - #### saveHtmlFile

          public static final void saveHtmlFile(java.lang.String text,
                                                java.io.File file)
                                         throws java.lang.Exception

      Сохраняет текст с содержимым html в файл. Сохраняет в utf-8. Вдобавок заменяет meta с чарсетом на utf-8 тоже (если есть мета вообще). Т.е. это в отличие от сохранения текстового.
      Throws:
        `java.lang.Exception`

    - #### saveTextFile

          public static final void saveTextFile(java.lang.String text,
                                                java.io.File file,
                                                java.lang.String ext)
                                         throws java.io.IOException

      Сохраняет текст в файл с расширением. Использует кодировку UTF-8.
      Parameters:
        `text` - текст. байты возьмутся из него в кодировке UTF-8.
        `file` - файл куда записать
        `ext` - расширение обязательное у файла. если нет такого то оно прибавится.
      Throws:
        `java.io.IOException`

    - #### saveBinaryFile

          public static void saveBinaryFile(byte[] bytes,
                                            java.io.File file,
                                            java.lang.String ext)
                                     throws java.io.IOException

      Сохраняет байты в файл с расширением. Для скачки с сервера чаще используется.
      Parameters:
        `bytes` - байты
        `file` - файл куда записать
        `ext` - расширение обязательное у файла. если нет такого то оно прибавится.
      Throws:
        `java.io.IOException`

    - #### saveBinaryFile

          public static void saveBinaryFile(java.io.InputStream is,
                                            java.io.File file,
                                            java.lang.String ext)
                                     throws java.io.IOException

      То же самое что `saveBinaryFile(byte[], File, String)` но с InputStream, для длинных файлов.
      Throws:
        `java.io.IOException`

    - #### getCacheDocument

          public static org.w3c.dom.Document getCacheDocument(org.w3c.dom.Document doc,
                                                              java.lang.String key)

    - #### expandTree

          public static void expandTree(javax.swing.JTree tree,
                                        javax.swing.tree.DefaultMutableTreeNode start)

      Разворачивание всего дерева начиная с указанного узла.
      Parameters:
        `tree` - дерево JTree
        `start` - верхний узел с которого всё развернуть

    - #### getExpandedTreeNodeList

          public static java.util.List<java.lang.String> getExpandedTreeNodeList(javax.swing.JTree tree,
                                                                                 java.lang.String pathdelim)

      Список развёрнутых узлов в дереве в виде path-ов, для сохранения перед обновлением и последущего восстановления.
      Parameters:
        `tree` - дерево JTree.
        `pathdelim` - разделитель, которым разделяются каждый компонент из path узлов.
      Returns:
        лист сериализованных развёрнутых path.
      See Also:
        `setExpandedTreeNodeList`

    - #### setExpandedTreeNodeList

          public static void setExpandedTreeNodeList(javax.swing.JTree tree,
                                                     java.util.List<java.lang.String> expandedNodes,
                                                     java.lang.String pathdelim)

      Восстановление развёрнутости узлов-path, сохранённых функцией getExpandedTreeNodeList.
      Parameters:
        `tree` - дерево JTree.
        `expandedNodes` - список path.
        `pathdelim` - список по которым бьются каждый компонент из path узлов (regexp, т.е. "."=>"\\.")
      See Also:
        `getExpandedTreeNodeList`

    - #### addShowCodeListener

          public static final void addShowCodeListener(bitel.billing.module.common.table.BGTable table)

    - #### openBrowser

          public static void openBrowser(java.net.URI uri)
                                  throws ru.bitel.bgbilling.common.BGException

      Открыть в дефолтном браузере системном.
      Parameters:
        `uri` - ури
      Throws:
        `ru.bitel.bgbilling.common.BGException` - если какая ошибка или неподдерживаемость

    - #### exec

          public static void exec(java.lang.String command)
                           throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### openTelnet

          public static void openTelnet(java.lang.String host,
                                        int port)
                                 throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### openTerminal

          public static void openTerminal(java.lang.String cmd)
                                   throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### openFile

          public static void openFile(java.io.File file)
                               throws ru.bitel.bgbilling.common.BGException

      Открыть файл в дефолтном приложении системном.
      Parameters:
        `file` - файл
      Throws:
        `ru.bitel.bgbilling.common.BGException` - если какая ошибка или неподдерживаемость

    - #### getIdFromTable

          public static java.lang.String getIdFromTable(bitel.billing.module.common.table.BGTable table,
                                                        int column)

    - #### getIdFromList

          public static java.lang.String getIdFromList(javax.swing.JList<bitel.billing.module.common.ListItem> list)

    - #### removeFromComboBox

          public static void removeFromComboBox(javax.swing.JComboBox<bitel.billing.module.common.ComboBoxItem> comboBox,
                                                java.lang.String value)

    - #### addShowCodeListener

          public static final void addShowCodeListener(javax.swing.JList<?> list)

    - #### checkValues

          public static void checkValues(javax.swing.JTextField tf,
                                         int minValue,
                                         int maxValue)

      Делает некоторые действия с текстом в поле. 1) преобразует цифры в последовательности (?) было: 0,1,2,3,6,7,18,19,20,23 стало: 0-3,6-7,18-20,23 2) проверяет на мин/макс. 3) ...
      Parameters:
        `tf` - текстфилд
        `minValue` -
        `maxValue` -

    - #### getListSelectedItemtoString

          public static java.lang.String getListSelectedItemtoString(javax.swing.JList<bitel.billing.module.common.ListItem> list)

    - #### addOnlyOneShownListener

          public static final void addOnlyOneShownListener(java.awt.Component... comp)

    - #### addShowCodeListener

          public static final void addShowCodeListener(bitel.billing.module.common.table.tree.JTreeTable dataTree,
                                                       bitel.billing.module.common.table.tree.DefaultTreeTableModel<?> model)

    - #### addOpenAction

          public static final void addOpenAction(java.awt.Component comp,
                                                 java.awt.event.AWTEventListener eventListener)

      Добавляет на компонент слушатель 1) даблклика и 2) нажатия Enter. Т.е. для быстрого добавления действия "перейти к объекту".
      Parameters:
        `comp` - компонент
        `eventListener` - листенер (AWTEventListener), куда передастся действие произошедшее - MouseEvent или KeyEvent.

    - #### addEnterDoClickDelegate

          public static void addEnterDoClickDelegate(java.awt.Component comp,
                                                     javax.swing.AbstractButton button)

      Назначение делегации клика кнопки от любой компоненты при нажатии на него ENTER. Т.е. при нажатии Enter в текстовом поле, например, срабатывает кнопка "поиск" итп

           JTextField value_TF = new JTextField();
           JButton okButton = new JButton( ">>>" );
           // добавляем поиск по ентеру в поле
           ClientUtils.addEnterDoClickDelegate( value_TF, okButton );

      Parameters:
        `comp` - компонента, которая слушает enter
        `button` - кнопка, которая программно кликнется

    - #### getModuleDoc

          public static org.w3c.dom.Document getModuleDoc(java.lang.Class<?> clazz)

    - #### getModuleDoc

          public static org.w3c.dom.Document getModuleDoc(java.lang.String rb_name)

    - #### getList

          public static java.util.List<IdTitle> getList(org.w3c.dom.Node node)

      Специальный метод для наполнения новых контролов через старые акшены. Использовать там, где раньше использовались buildList и т.п.
      Returns:
        список итемов

    - #### isCtrlI

          public static final boolean isCtrlI(java.awt.event.KeyEvent e)

    - #### getValueFromResourceBundle

          public static java.lang.String getValueFromResourceBundle(java.lang.String resourceBundleName,
                                                                    java.lang.String key)

    - #### getValueFromResourceBundle

          public static java.lang.String getValueFromResourceBundle(java.lang.String resourceBundleName,
                                                                    java.lang.String key,
                                                                    java.lang.String defaultValue)

    - #### showWaitWindow

          public static java.awt.Window showWaitWindow(java.lang.String message)

      Создаётся окошечко с сообщением и крутилкой. В конце надо сделать ему dispose. Вариант использования:

           Window waitwindow = null;
           try
           {
               waitwindow = ClientUtils.showWaitWindow("wait...");
               ...
           }
           finally
           {
               waitwindow.dispose();
           }

      Parameters:
        `message` - сообщение
      Returns:
        указатель на окно, которое надо будет закрыть.

    - #### getComponentKey

          public static java.lang.String getComponentKey(java.awt.Component c,
                                                         java.lang.String suffix)

      Получает из указанного компонента его ключ текстовый, чтобы сохранить в конфиге юзера, например, какие-то данные о нём.
      Parameters:
        `c` - компонент
        `suffix` - строка-окончание, если null, то возвращается только префикс без этого суффикса
      Returns:
        строка-ключ

    - #### getLocalSettingFolder

          public static java.io.File getLocalSettingFolder()

    - #### addComponentToPanel

          public static int addComponentToPanel(javax.swing.JPanel panel,
                                                int gridy,
                                                java.awt.Component[][] components,
                                                boolean addBottom)