40 lines
1.4 KiB
Java
40 lines
1.4 KiB
Java
package Common.Visual.Menus;
|
|
import Common.MainModule_;
|
|
import Common.Visual.Themes.ThemeElement;
|
|
import Common.Visual.UI_;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.event.PopupMenuEvent;
|
|
import javax.swing.event.PopupMenuListener;
|
|
public class StyledPopupMenu extends JPopupMenu implements ThemeElement {
|
|
public StyledPopupMenu() {
|
|
addPopupMenuListener(new PopupMenuListener() {
|
|
@Override
|
|
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
|
|
CheckElementsVisibility();
|
|
}
|
|
@Override
|
|
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
|
|
}
|
|
@Override
|
|
public void popupMenuCanceled(PopupMenuEvent e) {
|
|
}
|
|
});
|
|
}
|
|
private void refreshTheme_r(MenuElement element) {
|
|
element.getComponent().setBackground(MainModule_.instance.getUI().getTheme().background);
|
|
element.getComponent().setForeground(MainModule_.instance.getUI().getTheme().foreground);
|
|
for (MenuElement se : element.getSubElements())
|
|
refreshTheme_r(se);
|
|
}
|
|
@Override
|
|
public void applyTheme() {
|
|
setBackground(MainModule_.instance.getUI().getTheme().background);
|
|
setForeground(MainModule_.instance.getUI().getTheme().foreground);
|
|
refreshTheme_r(this);
|
|
}
|
|
public void CheckElementsVisibility() {
|
|
applyTheme();
|
|
}
|
|
}
|