src/java.desktop/share/classes/sun/awt/ComponentFactory.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 23,100 **** * questions. */ package sun.awt; - import sun.awt.datatransfer.DataTransferer; - import java.awt.*; ! import java.awt.dnd.*; import java.awt.dnd.peer.DragSourceContextPeer; import java.awt.peer.*; ! /** ! * Interface for component creation support in toolkits ! */ ! public interface ComponentFactory { ! ! CanvasPeer createCanvas(Canvas target) throws HeadlessException; ! ! PanelPeer createPanel(Panel target) throws HeadlessException; ! ! WindowPeer createWindow(Window target) throws HeadlessException; ! ! FramePeer createFrame(Frame target) throws HeadlessException; ! ! DialogPeer createDialog(Dialog target) throws HeadlessException; ! ! ButtonPeer createButton(Button target) throws HeadlessException; ! ! TextFieldPeer createTextField(TextField target) ! throws HeadlessException; ! ! ChoicePeer createChoice(Choice target) throws HeadlessException; ! ! LabelPeer createLabel(Label target) throws HeadlessException; ! ! ListPeer createList(List target) throws HeadlessException; ! ! CheckboxPeer createCheckbox(Checkbox target) ! throws HeadlessException; ! ! ScrollbarPeer createScrollbar(Scrollbar target) ! throws HeadlessException; ! ! ScrollPanePeer createScrollPane(ScrollPane target) ! throws HeadlessException; ! ! TextAreaPeer createTextArea(TextArea target) ! throws HeadlessException; ! ! FileDialogPeer createFileDialog(FileDialog target) ! throws HeadlessException; ! ! MenuBarPeer createMenuBar(MenuBar target) throws HeadlessException; ! ! MenuPeer createMenu(Menu target) throws HeadlessException; ! ! PopupMenuPeer createPopupMenu(PopupMenu target) ! throws HeadlessException; ! ! MenuItemPeer createMenuItem(MenuItem target) ! throws HeadlessException; ! ! CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target) ! throws HeadlessException; ! ! DragSourceContextPeer createDragSourceContextPeer( ! DragGestureEvent dge) ! throws InvalidDnDOperationException, HeadlessException; ! FontPeer getFontPeer(String name, int style); ! RobotPeer createRobot(Robot target, GraphicsDevice screen) ! throws AWTException, HeadlessException; ! DataTransferer getDataTransferer(); } --- 23,447 ---- * questions. */ package sun.awt; import java.awt.*; ! import java.awt.dnd.DragGestureEvent; ! import java.awt.dnd.InvalidDnDOperationException; import java.awt.dnd.peer.DragSourceContextPeer; import java.awt.peer.*; ! import sun.awt.datatransfer.DataTransferer; ! final class LightweightPeerHolder { ! static final LightweightPeer lightweightMarker = new NullComponentPeer(); ! private LightweightPeerHolder() { ! } ! } ! /** ! * Interface for component creation support in toolkits. ! */ ! public interface ComponentFactory { + /** + * Creates a peer for a component or container. This peer is windowless and + * allows the Component and Container classes to be extended directly to + * create windowless components that are defined entirely in java. + * + * @param target The Component to be created + * @return the peer for the specified component + */ + default LightweightPeer createComponent(Component target) { + return LightweightPeerHolder.lightweightMarker; + } + + /** + * Creates this toolkit's implementation of the {@code Desktop} using the + * specified peer interface. + * + * @param target the desktop to be implemented + * @return this toolkit's implementation of the {@code Desktop} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Desktop + * @see java.awt.peer.DesktopPeer + * @since 1.6 + */ + default DesktopPeer createDesktopPeer(Desktop target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Button} using the + * specified peer interface. + * + * @param target the button to be implemented + * @return this toolkit's implementation of {@code Button} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Button + * @see java.awt.peer.ButtonPeer + */ + default ButtonPeer createButton(Button target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code TextField} using the + * specified peer interface. + * + * @param target the text field to be implemented + * @return this toolkit's implementation of {@code TextField} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.TextField + * @see java.awt.peer.TextFieldPeer + */ + default TextFieldPeer createTextField(TextField target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Label} using the + * specified peer interface. + * + * @param target the label to be implemented + * @return this toolkit's implementation of {@code Label} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Label + * @see java.awt.peer.LabelPeer + */ + default LabelPeer createLabel(Label target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code List} using the specified + * peer interface. + * + * @param target the list to be implemented + * @return this toolkit's implementation of {@code List} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.List + * @see java.awt.peer.ListPeer + */ + default ListPeer createList(java.awt.List target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Checkbox} using the + * specified peer interface. + * + * @param target the check box to be implemented + * @return this toolkit's implementation of {@code Checkbox} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Checkbox + * @see java.awt.peer.CheckboxPeer + */ + default CheckboxPeer createCheckbox(Checkbox target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Scrollbar} using the + * specified peer interface. + * + * @param target the scroll bar to be implemented + * @return this toolkit's implementation of {@code Scrollbar} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Scrollbar + * @see java.awt.peer.ScrollbarPeer + */ + default ScrollbarPeer createScrollbar(Scrollbar target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code ScrollPane} using the + * specified peer interface. + * + * @param target the scroll pane to be implemented + * @return this toolkit's implementation of {@code ScrollPane} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.ScrollPane + * @see java.awt.peer.ScrollPanePeer + * @since 1.1 + */ + default ScrollPanePeer createScrollPane(ScrollPane target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code TextArea} using the + * specified peer interface. + * + * @param target the text area to be implemented + * @return this toolkit's implementation of {@code TextArea} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.TextArea + * @see java.awt.peer.TextAreaPeer + */ + default TextAreaPeer createTextArea(TextArea target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Choice} using the + * specified peer interface. + * + * @param target the choice to be implemented + * @return this toolkit's implementation of {@code Choice} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Choice + * @see java.awt.peer.ChoicePeer + */ + default ChoicePeer createChoice(Choice target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Frame} using the + * specified peer interface. + * + * @param target the frame to be implemented + * @return this toolkit's implementation of {@code Frame} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Frame + * @see java.awt.peer.FramePeer + */ + default FramePeer createFrame(Frame target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Canvas} using the + * specified peer interface. + * + * @param target the canvas to be implemented + * @return this toolkit's implementation of {@code Canvas} + * @see java.awt.Canvas + * @see java.awt.peer.CanvasPeer + */ + default CanvasPeer createCanvas(Canvas target) { + return (CanvasPeer) createComponent(target); + } + + /** + * Creates this toolkit's implementation of {@code Panel} using the + * specified peer interface. + * + * @param target the panel to be implemented + * @return this toolkit's implementation of {@code Panel} + * @see java.awt.Panel + * @see java.awt.peer.PanelPeer + */ + default PanelPeer createPanel(Panel target) { + return (PanelPeer) createComponent(target); + } + + /** + * Creates this toolkit's implementation of {@code Window} using the + * specified peer interface. + * + * @param target the window to be implemented + * @return this toolkit's implementation of {@code Window} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Window + * @see java.awt.peer.WindowPeer + */ + default WindowPeer createWindow(Window target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Dialog} using the + * specified peer interface. + * + * @param target the dialog to be implemented + * @return this toolkit's implementation of {@code Dialog} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Dialog + * @see java.awt.peer.DialogPeer + */ + default DialogPeer createDialog(Dialog target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code MenuBar} using the + * specified peer interface. + * + * @param target the menu bar to be implemented + * @return this toolkit's implementation of {@code MenuBar} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.MenuBar + * @see java.awt.peer.MenuBarPeer + */ + default MenuBarPeer createMenuBar(MenuBar target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code Menu} using the specified + * peer interface. + * + * @param target the menu to be implemented + * @return this toolkit's implementation of {@code Menu} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.Menu + * @see java.awt.peer.MenuPeer + */ + default MenuPeer createMenu(Menu target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code PopupMenu} using the + * specified peer interface. + * + * @param target the popup menu to be implemented + * @return this toolkit's implementation of {@code PopupMenu} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.PopupMenu + * @see java.awt.peer.PopupMenuPeer + * @since 1.1 + */ + default PopupMenuPeer createPopupMenu(PopupMenu target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code MenuItem} using the + * specified peer interface. + * + * @param target the menu item to be implemented + * @return this toolkit's implementation of {@code MenuItem} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.MenuItem + * @see java.awt.peer.MenuItemPeer + */ + default MenuItemPeer createMenuItem(MenuItem target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code FileDialog} using the + * specified peer interface. + * + * @param target the file dialog to be implemented + * @return this toolkit's implementation of {@code FileDialog} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.FileDialog + * @see java.awt.peer.FileDialogPeer + */ + default FileDialogPeer createFileDialog(FileDialog target) { + throw new HeadlessException(); + } + + /** + * Creates this toolkit's implementation of {@code CheckboxMenuItem} using + * the specified peer interface. + * + * @param target the checkbox menu item to be implemented + * @return this toolkit's implementation of {@code CheckboxMenuItem} + * @throws HeadlessException if GraphicsEnvironment.isHeadless() returns + * true + * @see java.awt.GraphicsEnvironment#isHeadless + * @see java.awt.CheckboxMenuItem + * @see java.awt.peer.CheckboxMenuItemPeer + */ + default CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target) { + throw new HeadlessException(); + } + + /** + * Creates the peer for a DragSourceContext. Always throws + * InvalidDndOperationException if GraphicsEnvironment.isHeadless() returns + * true. + * + * @param dge the {@code DragGestureEvent} + * @return the peer created + * @see java.awt.GraphicsEnvironment#isHeadless + */ + default DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) { + throw new InvalidDnDOperationException("Headless environment"); + } + + /** + * Creates this toolkit's implementation of {@code Font} using the specified + * peer interface. + * + * @param name the font to be implemented + * @param style the style of the font, such as {@code PLAIN}, {@code BOLD}, + * {@code ITALIC}, or a combination + * @return this toolkit's implementation of {@code Font} + * @see java.awt.Font + * @see java.awt.peer.FontPeer + * @see java.awt.GraphicsEnvironment#getAllFonts + * @deprecated see java.awt.GraphicsEnvironment#getAllFonts + */ + @Deprecated + default FontPeer getFontPeer(String name, int style) { + return null; + } + + default RobotPeer createRobot(Robot target, GraphicsDevice screen) + throws AWTException { + throw new HeadlessException(); + } + + default DataTransferer getDataTransferer() { + return null; + } + + /** + * Obtains this toolkit's implementation of helper class for {@code + * MouseInfo} operations. + * + * @return this toolkit's implementation of helper for {@code MouseInfo} + * @throws UnsupportedOperationException if this operation is not + * implemented + * @see java.awt.peer.MouseInfoPeer + * @see java.awt.MouseInfo + * @since 1.5 + */ + default MouseInfoPeer getMouseInfoPeer() { + throw new UnsupportedOperationException("Not implemented"); + } }