1 /* |
1 /* |
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. Oracle designates this |
7 * published by the Free Software Foundation. Oracle designates this |
24 */ |
24 */ |
25 |
25 |
26 |
26 |
27 package sun.lwawt; |
27 package sun.lwawt; |
28 |
28 |
29 import java.awt.Dimension; |
|
30 import java.awt.FontMetrics; |
|
31 import java.awt.Label; |
29 import java.awt.Label; |
32 import java.awt.peer.LabelPeer; |
30 import java.awt.peer.LabelPeer; |
33 |
31 |
34 import javax.swing.JLabel; |
32 import javax.swing.JLabel; |
35 import javax.swing.SwingConstants; |
33 import javax.swing.SwingConstants; |
36 |
34 |
37 import javax.tools.annotation.GenerateNativeHeader; |
|
38 |
|
39 /** |
35 /** |
40 * Lightweight implementation of {@link LabelPeer}. Delegates most of the work |
36 * Lightweight implementation of {@link LabelPeer}. Delegates most of the work |
41 * to the {@link JLabel}. |
37 * to the {@link JLabel}. |
42 */ |
38 */ |
43 /* No native methods here, but the constants are needed in the supporting JNI code */ |
|
44 @GenerateNativeHeader |
|
45 final class LWLabelPeer extends LWComponentPeer<Label, JLabel> |
39 final class LWLabelPeer extends LWComponentPeer<Label, JLabel> |
46 implements LabelPeer { |
40 implements LabelPeer { |
47 |
|
48 private static final int TEXT_XPAD = 5; |
|
49 private static final int TEXT_YPAD = 1; |
|
50 |
41 |
51 LWLabelPeer(final Label target, final PlatformComponent platformComponent) { |
42 LWLabelPeer(final Label target, final PlatformComponent platformComponent) { |
52 super(target, platformComponent); |
43 super(target, platformComponent); |
53 } |
44 } |
54 |
45 |
55 @Override |
46 @Override |
56 protected JLabel createDelegate() { |
47 protected JLabel createDelegate() { |
57 final JLabel label = new JLabel(); |
48 return new JLabel(); |
58 label.setVerticalAlignment(SwingConstants.TOP); |
|
59 return label; |
|
60 } |
49 } |
61 |
50 |
62 @Override |
51 @Override |
63 void initializeImpl() { |
52 void initializeImpl() { |
64 super.initializeImpl(); |
53 super.initializeImpl(); |
78 synchronized (getDelegateLock()) { |
67 synchronized (getDelegateLock()) { |
79 getDelegate().setHorizontalAlignment(convertAlignment(alignment)); |
68 getDelegate().setHorizontalAlignment(convertAlignment(alignment)); |
80 } |
69 } |
81 } |
70 } |
82 |
71 |
83 @Override |
|
84 public Dimension getMinimumSize() { |
|
85 int w = TEXT_XPAD; |
|
86 int h = TEXT_YPAD; |
|
87 final FontMetrics fm = getFontMetrics(getFont()); |
|
88 if (fm != null) { |
|
89 final String text; |
|
90 synchronized (getDelegateLock()) { |
|
91 text = getDelegate().getText(); |
|
92 } |
|
93 if (text != null) { |
|
94 w += fm.stringWidth(text); |
|
95 } |
|
96 h += fm.getHeight(); |
|
97 } |
|
98 return new Dimension(w, h); |
|
99 } |
|
100 |
|
101 /** |
72 /** |
102 * Converts {@code Label} alignment constant to the {@code JLabel} constant. |
73 * Converts {@code Label} alignment constant to the {@code JLabel} constant. |
103 * If wrong Label alignment provided returns default alignment. |
74 * If wrong Label alignment provided returns default alignment. |
104 * |
75 * |
105 * @param alignment {@code Label} constant. |
76 * @param alignment {@code Label} constant. |