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;
}
}