You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
998 B
39 lines
998 B
package com.bulenkov.darcula.util; |
|
|
|
import javax.swing.*; |
|
import java.awt.*; |
|
|
|
/** |
|
* @author Konstantin Bulenkov |
|
*/ |
|
public class UIUtil { |
|
public static <T extends JComponent> T findComponentOfType(JComponent parent, Class<T> cls) { |
|
if (parent == null || cls.isAssignableFrom(parent.getClass())) { |
|
@SuppressWarnings({"unchecked"}) final T t = (T)parent; |
|
return t; |
|
} |
|
for (Component component : parent.getComponents()) { |
|
if (component instanceof JComponent) { |
|
T comp = findComponentOfType((JComponent)component, cls); |
|
if (comp != null) return comp; |
|
} |
|
} |
|
return null; |
|
} |
|
|
|
public static <T> T getParentOfType(Class<? extends T> cls, Component c) { |
|
Component eachParent = c; |
|
while (eachParent != null) { |
|
if (cls.isAssignableFrom(eachParent.getClass())) { |
|
@SuppressWarnings({"unchecked"}) final T t = (T)eachParent; |
|
return t; |
|
} |
|
|
|
eachParent = eachParent.getParent(); |
|
} |
|
|
|
return null; |
|
} |
|
|
|
|
|
}
|
|
|