jdk/src/macosx/classes/sun/lwawt/LWLabelPeer.java
changeset 13993 8b3fe3d8badb
parent 13143 31c70a66a053
child 20153 d5bf90bfcb6d
equal deleted inserted replaced
13992:d1b65c4e924c 13993:8b3fe3d8badb
     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.