59 import java.awt.peer.ComponentPeer; |
59 import java.awt.peer.ComponentPeer; |
60 import java.awt.peer.ContainerPeer; |
60 import java.awt.peer.ContainerPeer; |
61 import java.lang.reflect.*; |
61 import java.lang.reflect.*; |
62 import java.security.*; |
62 import java.security.*; |
63 import java.util.Collection; |
63 import java.util.Collection; |
|
64 import java.util.Objects; |
64 import java.util.Set; |
65 import java.util.Set; |
65 import sun.util.logging.PlatformLogger; |
66 import sun.util.logging.PlatformLogger; |
66 import sun.awt.*; |
67 import sun.awt.*; |
67 import sun.awt.event.IgnorePaintEvent; |
68 import sun.awt.event.IgnorePaintEvent; |
68 import sun.awt.image.SunVolatileImage; |
69 import sun.awt.image.SunVolatileImage; |
633 g.setColor(topShadow ? lightShadow : darkShadow ); |
634 g.setColor(topShadow ? lightShadow : darkShadow ); |
634 g.drawLine(x+1, y+height, x+width, y+height); // bottom |
635 g.drawLine(x+1, y+height, x+width, y+height); // bottom |
635 g.drawLine(x+width, y+height, x+width, y+1); // right |
636 g.drawLine(x+width, y+height, x+width, y+1); // right |
636 } |
637 } |
637 |
638 |
|
639 @Override |
638 public void setBackground(Color c) { |
640 public void setBackground(Color c) { |
639 if (log.isLoggable(PlatformLogger.Level.FINE)) { |
641 if (log.isLoggable(PlatformLogger.Level.FINE)) { |
640 log.fine("Set background to " + c); |
642 log.fine("Set background to " + c); |
641 } |
643 } |
642 synchronized (getStateLock()) { |
644 synchronized (getStateLock()) { |
|
645 if (Objects.equals(background, c)) { |
|
646 return; |
|
647 } |
643 background = c; |
648 background = c; |
644 } |
649 } |
645 super.setBackground(c); |
650 super.setBackground(c); |
646 repaint(); |
651 repaint(); |
647 } |
652 } |
648 |
653 |
|
654 @Override |
649 public void setForeground(Color c) { |
655 public void setForeground(Color c) { |
650 if (log.isLoggable(PlatformLogger.Level.FINE)) { |
656 if (log.isLoggable(PlatformLogger.Level.FINE)) { |
651 log.fine("Set foreground to " + c); |
657 log.fine("Set foreground to " + c); |
652 } |
658 } |
653 synchronized (getStateLock()) { |
659 synchronized (getStateLock()) { |
|
660 if (Objects.equals(foreground, c)) { |
|
661 return; |
|
662 } |
654 foreground = c; |
663 foreground = c; |
655 } |
664 } |
656 repaint(); |
665 repaint(); |
657 } |
666 } |
658 |
667 |
672 fontLog.fine("Getting font metrics for " + font); |
681 fontLog.fine("Getting font metrics for " + font); |
673 } |
682 } |
674 return sun.font.FontDesignMetrics.getMetrics(font); |
683 return sun.font.FontDesignMetrics.getMetrics(font); |
675 } |
684 } |
676 |
685 |
|
686 @Override |
677 public void setFont(Font f) { |
687 public void setFont(Font f) { |
|
688 if (f == null) { |
|
689 f = XWindow.getDefaultFont(); |
|
690 } |
678 synchronized (getStateLock()) { |
691 synchronized (getStateLock()) { |
679 if (f == null) { |
692 if (f.equals(font)) { |
680 f = XWindow.getDefaultFont(); |
693 return; |
681 } |
694 } |
682 font = f; |
695 font = f; |
683 } |
696 } |
684 // as it stands currently we dont need to do layout or repaint since |
697 // as it stands currently we dont need to do layout since |
685 // layout is done in the Component upon setFont. |
698 // layout is done in the Component upon setFont. |
686 //layout(); |
699 //layout(); |
687 // target.repaint(); |
700 repaint(); |
688 //repaint()? |
|
689 } |
701 } |
690 |
702 |
691 public Font getFont() { |
703 public Font getFont() { |
692 return font; |
704 return font; |
693 } |
705 } |