public class sun.swing.WindowsPlacesBar extends javax.swing.JToolBar implements java.awt.event.ActionListener, java.beans.PropertyChangeListener
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.swing.WindowsPlacesBar
super_class: javax.swing.JToolBar
{
javax.swing.JFileChooser fc;
descriptor: Ljavax/swing/JFileChooser;
flags: (0x0000)
javax.swing.JToggleButton[] buttons;
descriptor: [Ljavax/swing/JToggleButton;
flags: (0x0000)
javax.swing.ButtonGroup buttonGroup;
descriptor: Ljavax/swing/ButtonGroup;
flags: (0x0000)
java.io.File[] files;
descriptor: [Ljava/io/File;
flags: (0x0000)
final java.awt.Dimension buttonSize;
descriptor: Ljava/awt/Dimension;
flags: (0x0010) ACC_FINAL
public void <init>(javax.swing.JFileChooser, boolean);
descriptor: (Ljavax/swing/JFileChooser;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iconst_1
invokespecial javax.swing.JToolBar.<init>:(I)V
1: aload 0
aload 1
putfield sun.swing.WindowsPlacesBar.fc:Ljavax/swing/JFileChooser;
2: aload 0
iconst_0
invokevirtual sun.swing.WindowsPlacesBar.setFloatable:(Z)V
3: aload 0
ldc "JToolBar.isRollover"
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
invokevirtual sun.swing.WindowsPlacesBar.putClientProperty:(Ljava/lang/Object;Ljava/lang/Object;)V
4: invokestatic sun.awt.OSInfo.getOSType:()Lsun/awt/OSInfo$OSType;
getstatic sun.awt.OSInfo$OSType.WINDOWS:Lsun/awt/OSInfo$OSType;
if_acmpne 7
5: invokestatic sun.awt.OSInfo.getWindowsVersion:()Lsun/awt/OSInfo$WindowsVersion;
getstatic sun.awt.OSInfo.WINDOWS_XP:Lsun/awt/OSInfo$WindowsVersion;
invokevirtual sun.awt.OSInfo$WindowsVersion.compareTo:(Lsun/awt/OSInfo$WindowsVersion;)I
6: iflt 7
iconst_1
goto 8
StackMap locals: sun.swing.WindowsPlacesBar javax.swing.JFileChooser int
StackMap stack:
7: iconst_0
StackMap locals:
StackMap stack: int
8: istore 3
start local 3 9: iload 2
ifeq 14
10: aload 0
new java.awt.Dimension
dup
bipush 83
bipush 69
invokespecial java.awt.Dimension.<init>:(II)V
putfield sun.swing.WindowsPlacesBar.buttonSize:Ljava/awt/Dimension;
11: aload 0
ldc "XPStyle.subAppName"
ldc "placesbar"
invokevirtual sun.swing.WindowsPlacesBar.putClientProperty:(Ljava/lang/Object;Ljava/lang/Object;)V
12: aload 0
new javax.swing.border.EmptyBorder
dup
iconst_1
iconst_1
iconst_1
iconst_1
invokespecial javax.swing.border.EmptyBorder.<init>:(IIII)V
invokevirtual sun.swing.WindowsPlacesBar.setBorder:(Ljavax/swing/border/Border;)V
13: goto 24
14: StackMap locals: int
StackMap stack:
aload 0
15: new java.awt.Dimension
dup
bipush 83
iload 3
ifeq 16
bipush 65
goto 17
StackMap locals: sun.swing.WindowsPlacesBar javax.swing.JFileChooser int int
StackMap stack: sun.swing.WindowsPlacesBar new 15 new 15 int
16: bipush 54
StackMap locals: sun.swing.WindowsPlacesBar javax.swing.JFileChooser int int
StackMap stack: sun.swing.WindowsPlacesBar new 15 new 15 int int
17: invokespecial java.awt.Dimension.<init>:(II)V
putfield sun.swing.WindowsPlacesBar.buttonSize:Ljava/awt/Dimension;
18: aload 0
new javax.swing.border.BevelBorder
dup
iconst_1
19: ldc "ToolBar.highlight"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
20: ldc "ToolBar.background"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
21: ldc "ToolBar.darkShadow"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
22: ldc "ToolBar.shadow"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
invokespecial javax.swing.border.BevelBorder.<init>:(ILjava/awt/Color;Ljava/awt/Color;Ljava/awt/Color;Ljava/awt/Color;)V
23: invokevirtual sun.swing.WindowsPlacesBar.setBorder:(Ljavax/swing/border/Border;)V
24: StackMap locals:
StackMap stack:
new java.awt.Color
dup
ldc "ToolBar.shadow"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
invokevirtual java.awt.Color.getRGB:()I
invokespecial java.awt.Color.<init>:(I)V
astore 4
start local 4 25: aload 0
aload 4
invokevirtual sun.swing.WindowsPlacesBar.setBackground:(Ljava/awt/Color;)V
26: aload 1
invokevirtual javax.swing.JFileChooser.getFileSystemView:()Ljavax/swing/filechooser/FileSystemView;
astore 5
start local 5 27: aload 0
ldc "fileChooserShortcutPanelFolders"
invokestatic sun.awt.shell.ShellFolder.get:(Ljava/lang/String;)Ljava/lang/Object;
checkcast java.io.File[]
putfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
28: aload 0
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
arraylength
anewarray javax.swing.JToggleButton
putfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
29: aload 0
new javax.swing.ButtonGroup
dup
invokespecial javax.swing.ButtonGroup.<init>:()V
putfield sun.swing.WindowsPlacesBar.buttonGroup:Ljavax/swing/ButtonGroup;
30: iconst_0
istore 6
start local 6 31: goto 69
32: StackMap locals: java.awt.Color javax.swing.filechooser.FileSystemView int
StackMap stack:
aload 5
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
invokevirtual javax.swing.filechooser.FileSystemView.isFileSystemRoot:(Ljava/io/File;)Z
ifeq 34
33: aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aload 5
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
invokevirtual javax.swing.filechooser.FileSystemView.createFileObject:(Ljava/lang/String;)Ljava/io/File;
aastore
34: StackMap locals:
StackMap stack:
aload 5
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
invokevirtual javax.swing.filechooser.FileSystemView.getSystemDisplayName:(Ljava/io/File;)Ljava/lang/String;
astore 7
start local 7 35: aload 7
getstatic java.io.File.separatorChar:C
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 8
start local 8 36: iload 8
iflt 38
iload 8
aload 7
invokevirtual java.lang.String.length:()I
iconst_1
isub
if_icmpge 38
37: aload 7
iload 8
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 7
38: StackMap locals: java.lang.String int
StackMap stack:
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
instanceof sun.awt.shell.ShellFolder
ifeq 47
39: aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
checkcast sun.awt.shell.ShellFolder
astore 10
start local 10 40: aload 10
iconst_1
invokevirtual sun.awt.shell.ShellFolder.getIcon:(Z)Ljava/awt/Image;
astore 11
start local 11 41: aload 11
ifnonnull 43
42: ldc "shell32LargeIcon 1"
invokestatic sun.awt.shell.ShellFolder.get:(Ljava/lang/String;)Ljava/lang/Object;
checkcast java.awt.Image
astore 11
43: StackMap locals: sun.swing.WindowsPlacesBar javax.swing.JFileChooser int int java.awt.Color javax.swing.filechooser.FileSystemView int java.lang.String int top sun.awt.shell.ShellFolder java.awt.Image
StackMap stack:
aload 11
ifnonnull 44
aconst_null
goto 45
StackMap locals:
StackMap stack:
44: new javax.swing.ImageIcon
dup
aload 11
aload 10
invokevirtual sun.awt.shell.ShellFolder.getFolderType:()Ljava/lang/String;
invokespecial javax.swing.ImageIcon.<init>:(Ljava/awt/Image;Ljava/lang/String;)V
StackMap locals:
StackMap stack: javax.swing.ImageIcon
45: astore 9
end local 11 end local 10 start local 9 46: goto 48
end local 9 47: StackMap locals: sun.swing.WindowsPlacesBar javax.swing.JFileChooser int int java.awt.Color javax.swing.filechooser.FileSystemView int java.lang.String int
StackMap stack:
aload 5
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 6
aaload
invokevirtual javax.swing.filechooser.FileSystemView.getSystemIcon:(Ljava/io/File;)Ljavax/swing/Icon;
astore 9
start local 9 48: StackMap locals: javax.swing.Icon
StackMap stack:
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
new javax.swing.JToggleButton
dup
aload 7
aload 9
invokespecial javax.swing.JToggleButton.<init>:(Ljava/lang/String;Ljavax/swing/Icon;)V
aastore
49: iload 2
ifeq 52
50: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
ldc "XPStyle.subAppName"
ldc "placesbar"
invokevirtual javax.swing.JToggleButton.putClientProperty:(Ljava/lang/Object;Ljava/lang/Object;)V
51: goto 55
52: StackMap locals:
StackMap stack:
new java.awt.Color
dup
ldc "List.selectionForeground"
invokestatic javax.swing.UIManager.getColor:(Ljava/lang/Object;)Ljava/awt/Color;
invokevirtual java.awt.Color.getRGB:()I
invokespecial java.awt.Color.<init>:(I)V
astore 10
start local 10 53: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
iconst_0
invokevirtual javax.swing.JToggleButton.setContentAreaFilled:(Z)V
54: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
aload 10
invokevirtual javax.swing.JToggleButton.setForeground:(Ljava/awt/Color;)V
end local 10 55: StackMap locals:
StackMap stack:
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
new java.awt.Insets
dup
iconst_3
iconst_2
iconst_1
iconst_2
invokespecial java.awt.Insets.<init>:(IIII)V
invokevirtual javax.swing.JToggleButton.setMargin:(Ljava/awt/Insets;)V
56: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
iconst_0
invokevirtual javax.swing.JToggleButton.setFocusPainted:(Z)V
57: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
iconst_0
invokevirtual javax.swing.JToggleButton.setIconTextGap:(I)V
58: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
iconst_0
invokevirtual javax.swing.JToggleButton.setHorizontalTextPosition:(I)V
59: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
iconst_3
invokevirtual javax.swing.JToggleButton.setVerticalTextPosition:(I)V
60: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
ldc 0.5
invokevirtual javax.swing.JToggleButton.setAlignmentX:(F)V
61: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
aload 0
getfield sun.swing.WindowsPlacesBar.buttonSize:Ljava/awt/Dimension;
invokevirtual javax.swing.JToggleButton.setPreferredSize:(Ljava/awt/Dimension;)V
62: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
aload 0
getfield sun.swing.WindowsPlacesBar.buttonSize:Ljava/awt/Dimension;
invokevirtual javax.swing.JToggleButton.setMaximumSize:(Ljava/awt/Dimension;)V
63: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
aload 0
invokevirtual javax.swing.JToggleButton.addActionListener:(Ljava/awt/event/ActionListener;)V
64: aload 0
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
invokevirtual sun.swing.WindowsPlacesBar.add:(Ljava/awt/Component;)Ljava/awt/Component;
pop
65: iload 6
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
arraylength
iconst_1
isub
if_icmpge 67
iload 2
ifeq 67
66: aload 0
new java.awt.Dimension
dup
iconst_1
iconst_1
invokespecial java.awt.Dimension.<init>:(II)V
invokestatic javax.swing.Box.createRigidArea:(Ljava/awt/Dimension;)Ljava/awt/Component;
invokevirtual sun.swing.WindowsPlacesBar.add:(Ljava/awt/Component;)Ljava/awt/Component;
pop
67: StackMap locals:
StackMap stack:
aload 0
getfield sun.swing.WindowsPlacesBar.buttonGroup:Ljavax/swing/ButtonGroup;
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 6
aaload
invokevirtual javax.swing.ButtonGroup.add:(Ljavax/swing/AbstractButton;)V
end local 9 end local 8 end local 7 68: iinc 6 1
StackMap locals:
StackMap stack:
69: iload 6
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
arraylength
if_icmplt 32
end local 6 70: aload 0
aload 1
invokevirtual javax.swing.JFileChooser.getCurrentDirectory:()Ljava/io/File;
invokevirtual sun.swing.WindowsPlacesBar.doDirectoryChanged:(Ljava/io/File;)V
71: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 72 0 this Lsun/swing/WindowsPlacesBar;
0 72 1 fc Ljavax/swing/JFileChooser;
0 72 2 isXPStyle Z
9 72 3 isXPPlatform Z
25 72 4 bgColor Ljava/awt/Color;
27 72 5 fsv Ljavax/swing/filechooser/FileSystemView;
31 70 6 i I
35 68 7 folderName Ljava/lang/String;
36 68 8 index I
46 47 9 icon Ljavax/swing/Icon;
48 68 9 icon Ljavax/swing/Icon;
40 46 10 sf Lsun/awt/shell/ShellFolder;
41 46 11 image Ljava/awt/Image;
53 55 10 fgColor Ljava/awt/Color;
MethodParameters:
Name Flags
fc
isXPStyle
protected void doDirectoryChanged(java.io.File);
descriptor: (Ljava/io/File;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 11
2: StackMap locals: int
StackMap stack:
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 2
aaload
astore 3
start local 3 3: aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 2
aaload
aload 1
invokevirtual java.io.File.equals:(Ljava/lang/Object;)Z
ifeq 6
4: aload 3
iconst_1
invokevirtual javax.swing.JToggleButton.setSelected:(Z)V
5: goto 12
6: StackMap locals: javax.swing.JToggleButton
StackMap stack:
aload 3
invokevirtual javax.swing.JToggleButton.isSelected:()Z
ifeq 10
7: aload 0
getfield sun.swing.WindowsPlacesBar.buttonGroup:Ljavax/swing/ButtonGroup;
aload 3
invokevirtual javax.swing.ButtonGroup.remove:(Ljavax/swing/AbstractButton;)V
8: aload 3
iconst_0
invokevirtual javax.swing.JToggleButton.setSelected:(Z)V
9: aload 0
getfield sun.swing.WindowsPlacesBar.buttonGroup:Ljavax/swing/ButtonGroup;
aload 3
invokevirtual javax.swing.ButtonGroup.add:(Ljavax/swing/AbstractButton;)V
end local 3 10: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
11: iload 2
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
arraylength
if_icmplt 2
end local 2 12: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/swing/WindowsPlacesBar;
0 13 1 f Ljava/io/File;
1 12 2 i I
3 10 3 b Ljavax/swing/JToggleButton;
MethodParameters:
Name Flags
f
public void propertyChange(java.beans.PropertyChangeEvent);
descriptor: (Ljava/beans/PropertyChangeEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.beans.PropertyChangeEvent.getPropertyName:()Ljava/lang/String;
astore 2
start local 2 1: aload 2
ldc "directoryChanged"
if_acmpne 3
2: aload 0
aload 0
getfield sun.swing.WindowsPlacesBar.fc:Ljavax/swing/JFileChooser;
invokevirtual javax.swing.JFileChooser.getCurrentDirectory:()Ljava/io/File;
invokevirtual sun.swing.WindowsPlacesBar.doDirectoryChanged:(Ljava/io/File;)V
3: StackMap locals: java.lang.String
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/swing/WindowsPlacesBar;
0 4 1 e Ljava/beans/PropertyChangeEvent;
1 4 2 prop Ljava/lang/String;
MethodParameters:
Name Flags
e
public void actionPerformed(java.awt.event.ActionEvent);
descriptor: (Ljava/awt/event/ActionEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.awt.event.ActionEvent.getSource:()Ljava/lang/Object;
checkcast javax.swing.JToggleButton
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 7
3: StackMap locals: javax.swing.JToggleButton int
StackMap stack:
aload 2
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iload 3
aaload
if_acmpne 6
4: aload 0
getfield sun.swing.WindowsPlacesBar.fc:Ljavax/swing/JFileChooser;
aload 0
getfield sun.swing.WindowsPlacesBar.files:[Ljava/io/File;
iload 3
aaload
invokevirtual javax.swing.JFileChooser.setCurrentDirectory:(Ljava/io/File;)V
5: goto 8
6: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
7: iload 3
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
arraylength
if_icmplt 3
end local 3 8: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/swing/WindowsPlacesBar;
0 9 1 e Ljava/awt/event/ActionEvent;
1 9 2 b Ljavax/swing/JToggleButton;
2 8 3 i I
MethodParameters:
Name Flags
e
public java.awt.Dimension getPreferredSize();
descriptor: ()Ljava/awt/Dimension;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
invokespecial javax.swing.JToolBar.getMinimumSize:()Ljava/awt/Dimension;
astore 1
start local 1 1: aload 0
invokespecial javax.swing.JToolBar.getPreferredSize:()Ljava/awt/Dimension;
astore 2
start local 2 2: aload 1
getfield java.awt.Dimension.height:I
istore 3
start local 3 3: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
ifnull 9
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
arraylength
ifle 9
aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
arraylength
iconst_5
if_icmpge 9
4: aload 0
getfield sun.swing.WindowsPlacesBar.buttons:[Ljavax/swing/JToggleButton;
iconst_0
aaload
astore 4
start local 4 5: aload 4
ifnull 9
6: iconst_5
aload 4
invokevirtual javax.swing.JToggleButton.getPreferredSize:()Ljava/awt/Dimension;
getfield java.awt.Dimension.height:I
iconst_1
iadd
imul
istore 5
start local 5 7: iload 5
iload 3
if_icmple 9
8: iload 5
istore 3
end local 5 end local 4 9: StackMap locals: java.awt.Dimension java.awt.Dimension int
StackMap stack:
iload 3
aload 2
getfield java.awt.Dimension.height:I
if_icmple 11
10: new java.awt.Dimension
dup
aload 2
getfield java.awt.Dimension.width:I
iload 3
invokespecial java.awt.Dimension.<init>:(II)V
astore 2
11: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/swing/WindowsPlacesBar;
1 12 1 min Ljava/awt/Dimension;
2 12 2 pref Ljava/awt/Dimension;
3 12 3 h I
5 9 4 b Ljavax/swing/JToggleButton;
7 9 5 bh I
}
SourceFile: "WindowsPlacesBar.java"
InnerClasses:
public final OSType = sun.awt.OSInfo$OSType of sun.awt.OSInfo
public WindowsVersion = sun.awt.OSInfo$WindowsVersion of sun.awt.OSInfo