use of com.intellij.ui.awt.RelativePoint in project intellij-community by JetBrains.
the class ImageDuplicateResultsDialog method createCenterPanel.
@Override
protected JComponent createCenterPanel() {
final JPanel panel = new JPanel(new BorderLayout());
DataManager.registerDataProvider(panel, new DataProvider() {
@Override
public Object getData(@NonNls String dataId) {
final TreePath path = myTree.getSelectionPath();
if (path != null) {
Object component = path.getLastPathComponent();
VirtualFile file = null;
if (component instanceof MyFileNode) {
component = ((MyFileNode) component).getParent();
}
if (component instanceof MyDuplicatesNode) {
file = ((MyDuplicatesNode) component).getUserObject().iterator().next();
}
if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) {
return file;
}
if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId) && file != null) {
return new VirtualFile[] { file };
}
}
return null;
}
});
final JBList list = new JBList(new ResourceModules().getModuleNames());
final NotNullFunction<Object, JComponent> modulesRenderer = dom -> new JLabel(dom instanceof Module ? ((Module) dom).getName() : dom.toString(), PlatformIcons.SOURCE_FOLDERS_ICON, SwingConstants.LEFT);
list.installCellRenderer(modulesRenderer);
final JPanel modulesPanel = ToolbarDecorator.createDecorator(list).setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
final Module[] all = ModuleManager.getInstance(myProject).getModules();
Arrays.sort(all, (o1, o2) -> o1.getName().compareTo(o2.getName()));
final JBList modules = new JBList(all);
modules.installCellRenderer(modulesRenderer);
JBPopupFactory.getInstance().createListPopupBuilder(modules).setTitle("Add Resource Module").setFilteringEnabled(o -> ((Module) o).getName()).setItemChoosenCallback(() -> {
final Object value = modules.getSelectedValue();
if (value instanceof Module && !myResourceModules.contains((Module) value)) {
myResourceModules.add((Module) value);
((DefaultListModel) list.getModel()).addElement(((Module) value).getName());
}
((DefaultTreeModel) myTree.getModel()).reload();
TreeUtil.expandAll(myTree);
}).createPopup().show(button.getPreferredPopupPoint());
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
final Object[] values = list.getSelectedValues();
for (Object value : values) {
myResourceModules.remove((String) value);
((DefaultListModel) list.getModel()).removeElement(value);
}
((DefaultTreeModel) myTree.getModel()).reload();
TreeUtil.expandAll(myTree);
}
}).disableDownAction().disableUpAction().createPanel();
modulesPanel.setPreferredSize(new Dimension(-1, 60));
final JPanel top = new JPanel(new BorderLayout());
top.add(new JLabel("Image modules:"), BorderLayout.NORTH);
top.add(modulesPanel, BorderLayout.CENTER);
panel.add(top, BorderLayout.NORTH);
panel.add(new JBScrollPane(myTree), BorderLayout.CENTER);
new AnAction() {
@Override
public void actionPerformed(AnActionEvent e) {
VirtualFile file = getFileFromSelection();
if (file != null) {
final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file);
if (psiFile != null) {
final ImplementationViewComponent viewComponent = new ImplementationViewComponent(new PsiElement[] { psiFile }, 0);
final TreeSelectionListener listener = new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
final VirtualFile selection = getFileFromSelection();
if (selection != null) {
final PsiFile newElement = PsiManager.getInstance(myProject).findFile(selection);
if (newElement != null) {
viewComponent.update(new PsiElement[] { newElement }, 0);
}
}
}
};
myTree.addTreeSelectionListener(listener);
final JBPopup popup = JBPopupFactory.getInstance().createComponentPopupBuilder(viewComponent, viewComponent.getPreferredFocusableComponent()).setProject(myProject).setDimensionServiceKey(myProject, ImageDuplicateResultsDialog.class.getName(), false).setResizable(true).setMovable(true).setRequestFocus(false).setCancelCallback(() -> {
myTree.removeTreeSelectionListener(listener);
return true;
}).setTitle("Image Preview").createPopup();
final Window window = ImageDuplicateResultsDialog.this.getWindow();
popup.show(new RelativePoint(window, new Point(window.getWidth(), 0)));
viewComponent.setHint(popup, "Image Preview");
}
}
}
}.registerCustomShortcutSet(CustomShortcutSet.fromString("ENTER"), panel);
int total = myDuplicates.values().stream().mapToInt(Set::size).sum() - myDuplicates.size();
final JLabel label = new JLabel("<html>Press <b>Enter</b> to preview image<br>Total images found: " + myImages.size() + ". Total duplicates found: " + total + "</html>");
panel.add(label, BorderLayout.SOUTH);
return panel;
}
use of com.intellij.ui.awt.RelativePoint in project intellij-community by JetBrains.
the class AbstractSchemesPanel method showStatus.
public void showStatus(final String message, MessageType messageType) {
BalloonBuilder balloonBuilder = JBPopupFactory.getInstance().createHtmlTextBalloonBuilder(message, messageType.getDefaultIcon(), messageType.getPopupBackground(), null);
balloonBuilder.setFadeoutTime(5000);
final Balloon balloon = balloonBuilder.createBalloon();
Point pointOnComponent = new Point(myToolbar.getWidth() / 4, myToolbar.getHeight() / 4);
balloon.show(new RelativePoint(myToolbar, pointOnComponent), Balloon.Position.above);
Disposer.register(ProjectManager.getInstance().getDefaultProject(), balloon);
}
use of com.intellij.ui.awt.RelativePoint in project intellij-community by JetBrains.
the class ConsoleViewImpl method calcNextOccurrence.
@Nullable
protected OccurenceInfo calcNextOccurrence(final int delta) {
if (myHyperlinks == null) {
return null;
}
return EditorHyperlinkSupport.getNextOccurrence(myEditor, delta, next -> {
int offset = next.getStartOffset();
scrollTo(offset);
final HyperlinkInfo hyperlinkInfo = EditorHyperlinkSupport.getHyperlinkInfo(next);
if (hyperlinkInfo instanceof BrowserHyperlinkInfo) {
return;
}
if (hyperlinkInfo instanceof HyperlinkInfoBase) {
VisualPosition position = myEditor.offsetToVisualPosition(offset);
Point point = myEditor.visualPositionToXY(new VisualPosition(position.getLine() + 1, position.getColumn()));
((HyperlinkInfoBase) hyperlinkInfo).navigate(myProject, new RelativePoint(myEditor.getContentComponent(), point));
} else if (hyperlinkInfo != null) {
hyperlinkInfo.navigate(myProject);
}
});
}
use of com.intellij.ui.awt.RelativePoint in project intellij-community by JetBrains.
the class RerunTestsNotification method doShow.
private static void doShow(@NotNull final ExecutionConsole executionConsole) {
final Alarm alarm = new Alarm();
alarm.addRequest(() -> {
String shortcutText = KeymapUtil.getFirstKeyboardShortcutText(ActionManager.getInstance().getAction(RerunTestsAction.ID));
if (shortcutText.isEmpty()) {
return;
}
GotItMessage message = GotItMessage.createMessage("Rerun tests with " + shortcutText, "");
message.setDisposable(executionConsole);
message.setCallback(() -> PropertiesComponent.getInstance().setValue(KEY, true));
message.setShowCallout(false);
Dimension consoleSize = executionConsole.getComponent().getSize();
message.show(new RelativePoint(executionConsole.getComponent(), new Point(consoleSize.width - 185, consoleSize.height - 60)), Balloon.Position.below);
Disposer.dispose(alarm);
}, 1000);
}
use of com.intellij.ui.awt.RelativePoint in project intellij-community by JetBrains.
the class JBRunnerTabs method processDropOver.
@Override
public void processDropOver(TabInfo over, RelativePoint relativePoint) {
final Point point = relativePoint.getPoint(getComponent());
myShowDropLocation = shouldAddToGlobal(point);
super.processDropOver(over, relativePoint);
for (Map.Entry<TabInfo, TabLabel> entry : myInfo2Label.entrySet()) {
final TabLabel label = entry.getValue();
if (label.getBounds().contains(point) && myDropInfo != entry.getKey()) {
select(entry.getKey(), false);
break;
}
}
}
Aggregations