package jetbrains.mps.editor.contextActionsTool.pluginSolution.plugin; /*Generated by MPS */ import java.awt.Component; import com.intellij.openapi.util.Condition; import java.awt.Container; import java.util.List; import java.util.ArrayList; import jetbrains.mps.nodeEditor.EditorComponent; import com.intellij.ui.tabs.impl.JBEditorTabs; import javax.swing.SwingUtilities; import javax.swing.JComponent; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import com.intellij.ui.tabs.TabInfo; public class ContextActionsUtil { public static Component findDescendantAWTComponent(Component root, Condition<Component> condition) { if (condition.value(root)) { return root; } if (root instanceof Container) { for (Component child : ((Container) root).getComponents()) { Component match = findDescendantAWTComponent(child, condition); if (match != null) { return match; } } } return null; } public static void findDescendantAWTComponents(Component root, Condition<Component> condition, List<Component> result) { if (condition.value(root)) { result.add(root); } if (root instanceof Container) { for (Component child : ((Container) root).getComponents()) { findDescendantAWTComponents(child, condition, result); } } } public static List<Component> findDescendantAWTComponents(Component root, Condition<Component> condition) { List<Component> result = new ArrayList<Component>(); findDescendantAWTComponents(root, condition, result); return result; } public static Component findParentAWTComponent(Component descendant, Condition<Component> condition) { if (descendant == null) { return null; } Component parent = descendant; while (parent != null) { if (condition.value(parent)) { return parent; } parent = parent.getParent(); } return null; } public static EditorComponent findActiveEditor(Component contextComponent) { List<JBEditorTabs> tabs = ((List<JBEditorTabs>) (List) findDescendantAWTComponents(SwingUtilities.getRoot(contextComponent), new Condition<Component>() { public boolean value(Component candidate) { return candidate instanceof JBEditorTabs; } })); if (tabs == null) { return null; } List<JComponent> selectedTabs = ListSequence.fromList(tabs).select(new ISelector<JBEditorTabs, JComponent>() { public JComponent select(JBEditorTabs it) { return check_7xpnm0_a0a0a0a0a3a8(it.getSelectedInfo()); } }).where(new IWhereFilter<JComponent>() { public boolean accept(JComponent it) { return it != null; } }).toListSequence(); if (ListSequence.fromList(selectedTabs).isEmpty()) { return null; } List<EditorComponent> editorComponents = ListSequence.fromList(selectedTabs).select(new ISelector<JComponent, EditorComponent>() { public EditorComponent select(JComponent it) { return (EditorComponent) findDescendantAWTComponent(it, new Condition<Component>() { public boolean value(Component candidate) { return candidate instanceof EditorComponent; } }); } }).where(new IWhereFilter<EditorComponent>() { public boolean accept(EditorComponent it) { return it != null; } }).toListSequence(); return ListSequence.fromList(editorComponents).first(); } private static JComponent check_7xpnm0_a0a0a0a0a3a8(TabInfo checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getComponent(); } return null; } }