Added theme support for ContextMenu
This commit is contained in:
parent
ec341e8518
commit
3e48d58628
@ -10,6 +10,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
|
import envoy.client.data.Settings;
|
||||||
import envoy.client.ui.Theme;
|
import envoy.client.ui.Theme;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,7 +61,10 @@ public class ContextMenu extends JPopupMenu {
|
|||||||
* {@link ContextMenu}
|
* {@link ContextMenu}
|
||||||
* @since Envoy v0.1-beta
|
* @since Envoy v0.1-beta
|
||||||
*/
|
*/
|
||||||
public ContextMenu(Component parent) { setInvoker(parent); }
|
public ContextMenu(Component parent) {
|
||||||
|
setInvoker(parent);
|
||||||
|
setOpaque(true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param label the string that a UI may use to display as a title
|
* @param label the string that a UI may use to display as a title
|
||||||
@ -80,13 +84,23 @@ public class ContextMenu extends JPopupMenu {
|
|||||||
*/
|
*/
|
||||||
public ContextMenu(String label, Component parent, Map<String, ActionListener> itemsWithActions, Map<String, Icon> itemIcons,
|
public ContextMenu(String label, Component parent, Map<String, ActionListener> itemsWithActions, Map<String, Icon> itemIcons,
|
||||||
Map<String, Integer> itemMnemonics) {
|
Map<String, Integer> itemMnemonics) {
|
||||||
super(label);
|
this(label);
|
||||||
setInvoker(parent);
|
setInvoker(parent);
|
||||||
this.items = (itemsWithActions != null) ? itemsWithActions : items;
|
this.items = (itemsWithActions != null) ? itemsWithActions : items;
|
||||||
this.icons = (itemIcons != null) ? itemIcons : icons;
|
this.icons = (itemIcons != null) ? itemIcons : icons;
|
||||||
this.mnemonics = (itemMnemonics != null) ? itemMnemonics : mnemonics;
|
this.mnemonics = (itemMnemonics != null) ? itemMnemonics : mnemonics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param label the string that a UI may use to display as a title for the
|
||||||
|
* pop-up menu.
|
||||||
|
* @since Envoy v0.1-beta
|
||||||
|
*/
|
||||||
|
public ContextMenu(String label) {
|
||||||
|
super(label);
|
||||||
|
setOpaque(true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepares the PopupMenu to be displayed. Should only be used once all map
|
* Prepares the PopupMenu to be displayed. Should only be used once all map
|
||||||
* values have been set.
|
* values have been set.
|
||||||
@ -110,21 +124,16 @@ public class ContextMenu extends JPopupMenu {
|
|||||||
else // normal JMenuItem wanted
|
else // normal JMenuItem wanted
|
||||||
item = new JMenuItem(text, icons.containsKey(text) ? icons.get(text) : null);
|
item = new JMenuItem(text, icons.containsKey(text) ? icons.get(text) : null);
|
||||||
item.addActionListener(action);
|
item.addActionListener(action);
|
||||||
|
item.setOpaque(true);
|
||||||
if (mnemonics.containsKey(text)) item.setMnemonic(mnemonics.get(text));
|
if (mnemonics.containsKey(text)) item.setMnemonic(mnemonics.get(text));
|
||||||
add(item);
|
add(item);
|
||||||
});
|
});
|
||||||
getInvoker().addMouseListener(getShowingListener());
|
getInvoker().addMouseListener(getShowingListener());
|
||||||
|
applyTheme(Settings.getInstance().getCurrentTheme());
|
||||||
built = true;
|
built = true;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param label the string that a UI may use to display as a title for the
|
|
||||||
* pop-up menu.
|
|
||||||
* @since Envoy v0.1-beta
|
|
||||||
*/
|
|
||||||
public ContextMenu(String label) { super(label); }
|
|
||||||
|
|
||||||
private MouseAdapter getShowingListener() {
|
private MouseAdapter getShowingListener() {
|
||||||
return new MouseAdapter() {
|
return new MouseAdapter() {
|
||||||
|
|
||||||
@ -240,7 +249,7 @@ public class ContextMenu extends JPopupMenu {
|
|||||||
* @since Envoy v0.1-beta
|
* @since Envoy v0.1-beta
|
||||||
*/
|
*/
|
||||||
protected void applyTheme(Theme theme) {
|
protected void applyTheme(Theme theme) {
|
||||||
setBackground(theme.getInteractableBackgroundColor());
|
setBackground(theme.getCellColor());
|
||||||
setForeground(theme.getTextColor());
|
setForeground(theme.getTextColor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user