Finished dark design and implementing important Components
This commit is contained in:
@@ -4,10 +4,18 @@
|
||||
|
||||
package org.openautonomousconnection.oacswing.component;
|
||||
|
||||
import org.openautonomousconnection.oacswing.component.design.DesignManager;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ContainerAdapter;
|
||||
import java.awt.event.ContainerEvent;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
|
||||
public class OACMenu extends JMenu implements OACComponent {
|
||||
private JPopupMenu observedPopup;
|
||||
|
||||
public OACMenu() {
|
||||
super();
|
||||
}
|
||||
@@ -24,6 +32,61 @@ public class OACMenu extends JMenu implements OACComponent {
|
||||
super(s, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
applyDesignColors();
|
||||
setOpaque(true);
|
||||
installPopupAutoApply();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateUI() {
|
||||
super.updateUI();
|
||||
applyDesignColors();
|
||||
installPopupAutoApply();
|
||||
}
|
||||
|
||||
private void applyDesignColors() {
|
||||
setBackground(DesignManager.resolveBackground(OACMenu.class, getBackground()));
|
||||
setForeground(DesignManager.resolveForeground(OACMenu.class, getForeground()));
|
||||
applyPopupDesign();
|
||||
}
|
||||
|
||||
private void installPopupAutoApply() {
|
||||
JPopupMenu popup = getPopupMenu();
|
||||
if (observedPopup == popup) {
|
||||
return;
|
||||
}
|
||||
popup.addContainerListener(new ContainerAdapter() {
|
||||
@Override
|
||||
public void componentAdded(ContainerEvent e) {
|
||||
applyPopupDesign();
|
||||
}
|
||||
});
|
||||
popup.addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
applyPopupDesign();
|
||||
}
|
||||
});
|
||||
observedPopup = popup;
|
||||
}
|
||||
|
||||
private void applyPopupDesign() {
|
||||
JPopupMenu popup = getPopupMenu();
|
||||
popup.setBackground(DesignManager.resolveBackground(OACPopupMenu.class, popup.getBackground()));
|
||||
popup.setForeground(DesignManager.resolveForeground(OACPopupMenu.class, popup.getForeground()));
|
||||
for (Component child : popup.getComponents()) {
|
||||
if (child instanceof OACComponent oac) {
|
||||
oac.initDesign();
|
||||
} else if (child instanceof JComponent jc) {
|
||||
jc.setOpaque(true);
|
||||
jc.setBackground(DesignManager.resolveBackground(OACMenuItem.class, jc.getBackground()));
|
||||
jc.setForeground(DesignManager.resolveForeground(OACMenuItem.class, jc.getForeground()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component add(Component comp) {
|
||||
this.initOther(comp);
|
||||
|
||||
Reference in New Issue
Block a user