@Override protected void actionPerformed( @NotNull AnActionEvent e, @NotNull Project project, @NotNull ChangeRequestChain chain, @NotNull DiffViewer diffViewer) { List<DiffRequestPresentable> requests = chain.getAllRequests(); List<Change> changes = getChangesFromRequests(requests); ChangesBrowser cb = new MyChangesBrowser(project, changes, requests, chain, diffViewer); myPopup = JBPopupFactory.getInstance() .createComponentPopupBuilder(cb, cb.getPreferredFocusedComponent()) .setResizable(true) .setModalContext(false) .setFocusable(true) .setRequestFocus(true) .setCancelOnWindowDeactivation(true) .setCancelOnOtherWindowOpen(true) .setMovable(true) .setCancelKeyEnabled(true) .setCancelOnClickOutside(true) .createPopup(); InputEvent event = e.getInputEvent(); if (event instanceof MouseEvent) { myPopup.show(new RelativePoint((MouseEvent) event)); } else { myPopup.showInBestPositionFor(e.getDataContext()); } }
@Override public void run() { Change change = getSelectedChanges().get(0); DiffRequestPresentable selectedStep = findSelectedStep(change); if (selectedStep != null) { DiffRequest newRequest = myChain.moveTo(selectedStep); openRequest(myDiffViewer, newRequest); } myPopup.cancel(); }
@Override protected boolean isEnabled(@NotNull ChangeRequestChain chain) { return getChangesFromRequests(chain.getAllRequests()).size() > 1; }