void (@NotNull final Project project, MyUsageTarget usageTarget, Factory<UsageSearcher> searcherFactory, final EditExpressionAction editAction) { final UsageViewPresentation presentation = new UsageViewPresentation(); presentation.setTargetsNodeText(XPathBundle.message("list.item.xpath.expression")); presentation.setCodeUsages(false); presentation.setCodeUsagesString(XPathBundle.message("list.item.found.matches")); presentation.setNonCodeUsagesString(XPathBundle.message("list.item.result")); presentation.setUsagesString(XPathBundle.message("xpath.result")); final ItemPresentation targetPresentation = usageTarget.getPresentation(); if (targetPresentation != null) { presentation .setTabText(StringUtil.shortenTextWithEllipsis(XPathBundle.message("tab.title.xpath", targetPresentation.getPresentableText()), 60, 0, true)); } else { presentation.setTabText("XPath"); //NON-NLS } presentation.setScopeText("XML Files"); presentation.setOpenInNewTab(FindSettings.getInstance().isShowResultsInSeparateView()); final FindUsagesProcessPresentation processPresentation = new FindUsagesProcessPresentation(presentation); processPresentation.setShowPanelIfOnlyOneUsage(true); processPresentation.setShowNotFoundMessage(true); final UsageTarget[] usageTargets = { usageTarget }; UsageViewManager.getInstance(project).searchAndShowUsages( usageTargets, searcherFactory, processPresentation, presentation, new UsageViewManager.UsageViewStateListener() { @Override public void usageViewCreated(@NotNull UsageView usageView) { usageView.addButtonToLowerPane(editAction, XPathBundle.message("button.edit.expression.with.mnemonic")); } @Override public void findingUsagesFinished(UsageView usageView) { } }); }