| 1 7 8 package java.awt; 9 10 import java.util.MissingResourceException ; 11 import java.util.Properties ; 12 import java.util.ResourceBundle ; 13 import java.util.StringTokenizer ; 14 import java.awt.event.*; 15 import java.awt.peer.*; 16 import java.awt.*; 17 import java.awt.im.InputMethodHighlight ; 18 import java.awt.image.ImageObserver ; 19 import java.awt.image.ImageProducer ; 20 import java.awt.image.ColorModel ; 21 import java.awt.datatransfer.Clipboard ; 22 import java.awt.dnd.DnDConstants ; 23 import java.awt.dnd.DragSource ; 24 import java.awt.dnd.DragGestureRecognizer ; 25 import java.awt.dnd.DragGestureEvent ; 26 import java.awt.dnd.DragGestureListener ; 27 import java.awt.dnd.InvalidDnDOperationException ; 28 import java.awt.dnd.peer.DragSourceContextPeer; 29 import java.net.URL ; 30 import java.io.BufferedInputStream ; 31 import java.io.File ; 32 import java.io.FileInputStream ; 33 import java.security.AccessController ; 34 import java.security.PrivilegedAction ; 35 36 import java.util.EventListener ; 37 import java.util.Map ; 38 import java.util.HashMap ; 39 import java.util.WeakHashMap ; 40 import java.util.List ; 41 import java.util.ArrayList ; 42 43 import java.beans.PropertyChangeListener ; 44 import java.beans.PropertyChangeSupport ; 45 46 import sun.awt.DebugHelper; 47 import sun.awt.HeadlessToolkit; 48 import sun.awt.NullComponentPeer; 49 import sun.security.util.SecurityConstants; 50 101 public abstract class Toolkit { 102 103 114 protected abstract ButtonPeer createButton(Button target) 115 throws HeadlessException ; 116 117 128 protected abstract TextFieldPeer createTextField(TextField target) 129 throws HeadlessException ; 130 131 142 protected abstract LabelPeer createLabel(Label target) 143 throws HeadlessException ; 144 145 156 protected abstract ListPeer createList(java.awt.List target) 157 throws HeadlessException ; 158 159 170 protected abstract CheckboxPeer createCheckbox(Checkbox target) 171 throws HeadlessException ; 172 173 184 protected abstract ScrollbarPeer createScrollbar(Scrollbar target) 185 throws HeadlessException ; 186 187 199 protected abstract ScrollPanePeer createScrollPane(ScrollPane target) 200 throws HeadlessException ; 201 202 213 protected abstract TextAreaPeer createTextArea(TextArea target) 214 throws HeadlessException ; 215 216 227 protected abstract ChoicePeer createChoice(Choice target) 228 throws HeadlessException ; 229 230 241 protected abstract FramePeer createFrame(Frame target) 242 throws HeadlessException ; 243 244 252 protected abstract CanvasPeer createCanvas(Canvas target); 253 254 262 protected abstract PanelPeer createPanel(Panel target); 263 264 275 protected abstract WindowPeer createWindow(Window target) 276 throws HeadlessException ; 277 278 289 protected abstract DialogPeer createDialog(Dialog target) 290 throws HeadlessException ; 291 292 303 protected abstract MenuBarPeer createMenuBar(MenuBar target) 304 throws HeadlessException ; 305 306 317 protected abstract MenuPeer createMenu(Menu target) 318 throws HeadlessException ; 319 320 332 protected abstract PopupMenuPeer createPopupMenu(PopupMenu target) 333 throws HeadlessException ; 334 335 346 protected abstract MenuItemPeer createMenuItem(MenuItem target) 347 throws HeadlessException ; 348 349 360 protected abstract FileDialogPeer createFileDialog(FileDialog target) 361 throws HeadlessException ; 362 363 374 protected abstract CheckboxMenuItemPeer createCheckboxMenuItem( 375 CheckboxMenuItem target) throws HeadlessException ; 376 377 385 protected MouseInfoPeer getMouseInfoPeer() { 386 throw new UnsupportedOperationException ("Not implemented"); 387 } 388 389 private static LightweightPeer lightweightMarker; 390 391 398 protected LightweightPeer createComponent(Component target) { 399 if (lightweightMarker == null) { 400 lightweightMarker = new NullComponentPeer(); 401 } 402 return lightweightMarker; 403 } 404 405 417 @Deprecated  418 protected abstract FontPeer getFontPeer(String name, int style); 419 420 423 433 protected void loadSystemColors(int[] systemColors) 434 throws HeadlessException { 435 } 436 437 463 public void setDynamicLayout(boolean dynamic) 464 throws HeadlessException { 465 } 466 467 486 protected boolean isDynamicLayoutSet() 487 throws HeadlessException { 488 if (this != Toolkit.getDefaultToolkit()) { 489 return Toolkit.getDefaultToolkit().isDynamicLayoutSet(); 490 } else { 491 return false; 492 } 493 } 494 495 512 public boolean isDynamicLayoutActive() 513 throws HeadlessException { 514 if (this != Toolkit.getDefaultToolkit()) { 515 return Toolkit.getDefaultToolkit().isDynamicLayoutActive(); 516 } else { 517 return false; 518 } 519 } 520 521 533 public abstract Dimension getScreenSize() 534 throws HeadlessException ; 535 536 543 public abstract int getScreenResolution() 544 throws HeadlessException ; 545 546 555 public Insets getScreenInsets(GraphicsConfiguration gc) 556 throws HeadlessException { 557 if (this != Toolkit.getDefaultToolkit()) { 558 return Toolkit.getDefaultToolkit().getScreenInsets(gc); 559 } else { 560 return new Insets (0, 0, 0, 0); 561 } 562 } 563 564 582 public abstract ColorModel getColorModel() 583 throws HeadlessException ; 584 585 601 @Deprecated  602 public abstract String [] getFontList(); 603 604 614 @Deprecated  615 public abstract FontMetrics getFontMetrics(Font font); 616 617 624 public abstract void sync(); 625 626 629 private static Toolkit toolkit; 630 631 635 private static String atNames; 636 637 648 private static void initAssistiveTechnologies() { 649 650 final String sep = File.separator; 652 final Properties properties = new Properties (); 653 654 655 atNames = (String )java.security.AccessController.doPrivileged( 656 new java.security.PrivilegedAction () { 657 public Object run() { 658 659 try { 661 File propsFile = new File ( 662 System.getProperty("user.home") + 663 sep + ".accessibility.properties"); 664 FileInputStream in = 665 new FileInputStream (propsFile); 666 667 properties.load(in); 669 in.close(); 670 } catch (Exception e) { 671 } 673 674 if (properties.size() == 0) { 678 try { 679 File propsFile = new File ( 680 System.getProperty("java.home") + sep + "lib" + 681 sep + "accessibility.properties"); 682 FileInputStream in = 683 new FileInputStream (propsFile); 684 685 properties.load(in); 687 in.close(); 688 } catch (Exception e) { 689 } 692 } 693 694 String magPresent = System.getProperty("javax.accessibility.screen_magnifier_present"); 697 if (magPresent == null) { 698 magPresent = properties.getProperty("screen_magnifier_present", null); 699 if (magPresent != null) { 700 System.setProperty("javax.accessibility.screen_magnifier_present", magPresent); 701 } 702 } 703 704 String classNames = System.getProperty("javax.accessibility.assistive_technologies"); 708 if (classNames == null) { 709 classNames = properties.getProperty("assistive_technologies", null); 710 if (classNames != null) { 711 System.setProperty("javax.accessibility.assistive_technologies", classNames); 712 } 713 } 714 return classNames; 715 } 716 }); 717 } 718 719 738 private static void loadAssistiveTechnologies() { 739 if (atNames != null) { 741 ClassLoader cl = ClassLoader.getSystemClassLoader(); 742 StringTokenizer parser = new StringTokenizer (atNames," ,"); 743 String atName; 744 while (parser.hasMoreTokens()) { 745 atName = parser.nextToken(); 746 try { 747 Class clazz; 748 if (cl != null) { 749 clazz = cl.loadClass(atName); 750 } else { 751 clazz = Class.forName(atName); 752 } 753 clazz.newInstance(); 754 } catch (ClassNotFoundException e) { 755 throw new AWTError ("Assistive Technology not found: " 756 + atName); 757 } catch (InstantiationException e) { 758 throw new AWTError ("Could not instantiate Assistive" 759 + " Technology: " + atName); 760 } catch (IllegalAccessException e) { 761 throw new AWTError ("Could not access Assistive" 762 + " Technology: " + atName); 763 } catch (Exception e) { 764 throw new AWTError ("Error trying to install Assistive" 765 + " Technology: " + atName + " " + e); 766 } 767 } 768 } 769 } 770 771 796 public static synchronized Toolkit getDefaultToolkit() { 797 if (toolkit == null) { 798 try { 799 java.lang.Compiler.disable(); 803 804 java.security.AccessController.doPrivileged( 805 new java.security.PrivilegedAction () { 806 public Object run() { 807 String nm = null; 808 Class cls = null; 809 try { 810 String defaultToolkit; 811 812 if (System.getProperty("os.name").equals("Linux")) { 813 defaultToolkit = "sun.awt.X11.XToolkit"; 814 } 815 else { 816 defaultToolkit = "sun.awt.motif.MToolkit"; 817 } 818 nm = System.getProperty("awt.toolkit", 819 defaultToolkit); 820 try { 821 cls = Class.forName(nm); 822 } catch (ClassNotFoundException e) { 823 ClassLoader cl = ClassLoader.getSystemClassLoader(); 824 if (cl != null) { 825 try { 826 cls = cl.loadClass(nm); 827 } catch (ClassNotFoundException ee) { 828 throw new AWTError ("Toolkit not found: " + nm); 829 } 830 } 831 } 832 if (cls != null) { 833 toolkit = (Toolkit )cls.newInstance(); 834 if (GraphicsEnvironment.isHeadless()) { 835 toolkit = new HeadlessToolkit(toolkit); 836 } 837 } 838 } catch (InstantiationException e) { 839 throw new AWTError ("Could not instantiate Toolkit: " + 840 nm); 841 } catch (IllegalAccessException e) { 842 throw new AWTError ("Could not access Toolkit: " + nm); 843  
|