void (@NotNull HyperlinkEvent e) { try { URI url = new URI(e.getDescription()); if (url.getScheme().equals("settings")) { DataContext context = DataManager.getInstance().getDataContextFromFocus().getResult(); if (context != null) { Settings settings = Settings.KEY.getData(context); SearchTextField searchTextField = SearchTextField.KEY.getData(context); String configId = url.getAuthority(); //using `getAuthority` instead of `getHost` to support white spaces in configId String search = url.getQuery(); if (settings != null) { Configurable configurable = settings.find(configId); settings.select(configurable).doWhenDone(() -> { if (searchTextField != null && search != null) searchTextField.setText(search); }); } else { ShowSettingsUtilImpl.showSettingsDialog(project, configId, search); } } } else if (url.getScheme().equals("action")) { AnAction action = ActionManager.getInstance().getAction(url.getAuthority()); if (action != null) { if (action instanceof ActionGroup group) { final ActionPopupMenu menu = ActionManager.getInstance().createActionPopupMenu(ActionPlaces.POPUP, group); final Point point = new Point(); if (e.getInputEvent() instanceof MouseEvent mouseEvent) { point.x = mouseEvent.getX(); point.y = mouseEvent.getY(); } menu.getComponent().show((Component)e.getSource(), point.x, point.y); } else { final AnActionEvent event = AnActionEvent.createFromInputEvent( e.getInputEvent(), ActionPlaces.UNKNOWN, null, DataContext.EMPTY_CONTEXT ); action.actionPerformed(event); } } } else { BrowserUtil.browse(url); } } catch (URISyntaxException ex) { LOG.error(ex); } }