FileDocCategorySizeDatePackage
MetalDesktopIconUI.javaAPI DocJava SE 5 API3918Fri Aug 26 14:58:06 BST 2005javax.swing.plaf.metal

MetalDesktopIconUI

public class MetalDesktopIconUI extends BasicDesktopIconUI
Metal desktop icon.
version
1.21 12/19/03
author
Steve Wilson

Fields Summary
JButton
button
JLabel
label
TitleListener
titleListener
private int
width
Constructors Summary
public MetalDesktopIconUI()

    
Methods Summary
public static javax.swing.plaf.ComponentUIcreateUI(javax.swing.JComponent c)

        return new MetalDesktopIconUI();
    
public java.awt.DimensiongetMaximumSize(javax.swing.JComponent c)

 
        // Metal desktop icons can not be resized.  Their dimensions should
        // always be the minimum size.  See getMinimumSize(JComponent c).
        return getMinimumSize(c);
    
public java.awt.DimensiongetMinimumSize(javax.swing.JComponent c)

 
        // For the metal desktop icon we will use the layout maanger to
        // determine the correct height of the component, but we want to keep
        // the width consistent according to the jlf spec.
        return new Dimension(width,
                desktopIcon.getLayout().minimumLayoutSize(desktopIcon).height);
    
public java.awt.DimensiongetPreferredSize(javax.swing.JComponent c)

        // Metal desktop icons can not be resized.  Their dimensions should
        // always be the minimum size.  See getMinimumSize(JComponent c).
        return getMinimumSize(c);
    
protected voidinstallComponents()

	frame = desktopIcon.getInternalFrame();
	Icon icon = frame.getFrameIcon();
	String title = frame.getTitle();

	button = new JButton (title, icon);
	button.addActionListener( new ActionListener() {
	                          public void actionPerformed(ActionEvent e) {
             deiconize(); }} );
	button.setFont(desktopIcon.getFont());
	button.setBackground(desktopIcon.getBackground());
	button.setForeground(desktopIcon.getForeground());

	int buttonH = button.getPreferredSize().height;

	Icon drag = new MetalBumps((buttonH/3), buttonH,
				   MetalLookAndFeel.getControlHighlight(),
				   MetalLookAndFeel.getControlDarkShadow(),
				   MetalLookAndFeel.getControl());
	label = new JLabel(drag);

	label.setBorder( new MatteBorder( 0, 2, 0, 1, desktopIcon.getBackground()) );
	desktopIcon.setLayout(new BorderLayout(2, 0));
	desktopIcon.add(button, BorderLayout.CENTER);
	desktopIcon.add(label, BorderLayout.WEST);
    
protected voidinstallDefaults()

        super.installDefaults();
        LookAndFeel.installColorsAndFont(desktopIcon, "DesktopIcon.background", "DesktopIcon.foreground", "DesktopIcon.font");
        width = UIManager.getInt("DesktopIcon.width");
    
protected voidinstallListeners()

        super.installListeners();
        desktopIcon.getInternalFrame().addPropertyChangeListener(
                titleListener = new TitleListener());
    
protected voiduninstallComponents()

	desktopIcon.setLayout(null);
	desktopIcon.remove(label);
	desktopIcon.remove(button);
        button = null;
        frame = null;
    
protected voiduninstallListeners()

        desktopIcon.getInternalFrame().removePropertyChangeListener(
                titleListener);	
        titleListener = null;
        super.uninstallListeners();