* make it look better (e.g. window shadows) by forcing heavy-weight windows

This commit is contained in:
Reinhard Pointner 2013-03-02 10:36:01 +00:00
parent 015f997ba2
commit 2dd24e53a7
1 changed files with 26 additions and 37 deletions

View File

@ -1,7 +1,5 @@
package net.sourceforge.tuned.ui; package net.sourceforge.tuned.ui;
import java.awt.Color; import java.awt.Color;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -17,104 +15,95 @@ import javax.swing.JSeparator;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
public class ActionPopup extends JPopupMenu { public class ActionPopup extends JPopupMenu {
protected final JLabel headerLabel = new JLabel(); protected final JLabel headerLabel = new JLabel();
protected final JLabel descriptionLabel = new JLabel(); protected final JLabel descriptionLabel = new JLabel();
protected final JLabel statusLabel = new JLabel(); protected final JLabel statusLabel = new JLabel();
protected final JPanel actionPanel = new JPanel(new MigLayout("nogrid, insets 0, fill")); protected final JPanel actionPanel = new JPanel(new MigLayout("nogrid, insets 0, fill"));
public ActionPopup(String label, Icon icon) { public ActionPopup(String label, Icon icon) {
headerLabel.setText(label); headerLabel.setText(label);
headerLabel.setIcon(icon); headerLabel.setIcon(icon);
headerLabel.setIconTextGap(5); headerLabel.setIconTextGap(5);
actionPanel.setOpaque(false); actionPanel.setOpaque(false);
statusLabel.setFont(statusLabel.getFont().deriveFont(10f)); statusLabel.setFont(statusLabel.getFont().deriveFont(10f));
statusLabel.setForeground(Color.GRAY); statusLabel.setForeground(Color.GRAY);
setLayout(new MigLayout("nogrid, fill, insets 0")); setLayout(new MigLayout("nogrid, fill, insets 0"));
add(headerLabel, "gapx 5px 5px, gapy 3px 1px, wrap 3px"); add(headerLabel, "gapx 5px 5px, gapy 3px 1px, wrap 3px");
add(new JSeparator(), "growx, wrap 1px"); add(new JSeparator(), "growx, wrap 1px");
add(actionPanel, "growx, wrap 0px"); add(actionPanel, "growx, wrap 0px");
add(new JSeparator(), "growx, wrap 0px"); add(new JSeparator(), "growx, wrap 0px");
add(statusLabel, "growx, h 11px!, gapx 3px, wrap 1px"); add(statusLabel, "growx, h 11px!, gapx 3px, wrap 1px");
// make it look better (e.g. window shadows) by forcing heavy-weight windows
setLightWeightPopupEnabled(false);
} }
public void addDescription(JComponent component) { public void addDescription(JComponent component) {
actionPanel.add(component, "gapx 4px, wrap 3px"); actionPanel.add(component, "gapx 4px, wrap 3px");
} }
public void addAction(JComponent component) { public void addAction(JComponent component) {
actionPanel.add(component, "gapx 12px 12px, growx, wrap"); actionPanel.add(component, "gapx 12px 12px, growx, wrap");
} }
@Override @Override
public void addSeparator() { public void addSeparator() {
actionPanel.add(new JSeparator(), "growx, wrap 1px"); actionPanel.add(new JSeparator(), "growx, wrap 1px");
} }
@Override @Override
public JMenuItem add(Action a) { public JMenuItem add(Action a) {
LinkButton link = new LinkButton(a); LinkButton link = new LinkButton(a);
// underline text // underline text
link.setText(String.format("<html><nobr><u>%s</u></nobr></html>", link.getText())); link.setText(String.format("<html><nobr><u>%s</u></nobr></html>", link.getText()));
// use rollover color // use rollover color
link.setRolloverEnabled(false); link.setRolloverEnabled(false);
link.setColor(link.getRolloverColor()); link.setColor(link.getRolloverColor());
// close popup when action is triggered // close popup when action is triggered
link.addActionListener(closeListener); link.addActionListener(closeListener);
addAction(link); addAction(link);
return null; return null;
} }
public void clear() { public void clear() {
actionPanel.removeAll(); actionPanel.removeAll();
} }
@Override @Override
public void setLabel(String label) { public void setLabel(String label) {
headerLabel.setText(label); headerLabel.setText(label);
} }
@Override @Override
public String getLabel() { public String getLabel() {
return headerLabel.getText(); return headerLabel.getText();
} }
public void setStatus(String string) { public void setStatus(String string) {
statusLabel.setText(string); statusLabel.setText(string);
} }
public String getStatus() { public String getStatus() {
return statusLabel.getText(); return statusLabel.getText();
} }
private final ActionListener closeListener = new ActionListener() { private final ActionListener closeListener = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
setVisible(false); setVisible(false);
} }
}; };
} }