From 83a08bb60b91f3dd78a463f37201e322d8646f5e Mon Sep 17 00:00:00 2001 From: Alexander Zvegintsev Date: Wed, 30 Sep 2015 13:31:01 +0300 Subject: [PATCH 01/17] 8076540: [macosx] NPE due to incorrect threading Reviewed-by: alexsch, azvegint --- jdk/test/sun/java2d/loops/CopyAreaSpeed.html | 39 +++ jdk/test/sun/java2d/loops/CopyAreaSpeed.java | 268 +++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 jdk/test/sun/java2d/loops/CopyAreaSpeed.html create mode 100644 jdk/test/sun/java2d/loops/CopyAreaSpeed.java diff --git a/jdk/test/sun/java2d/loops/CopyAreaSpeed.html b/jdk/test/sun/java2d/loops/CopyAreaSpeed.html new file mode 100644 index 00000000000..a60ef8caa3c --- /dev/null +++ b/jdk/test/sun/java2d/loops/CopyAreaSpeed.html @@ -0,0 +1,39 @@ + + + + + CopyAreaSpeed + + + +

CopyAreaSpeed

+
+
Thanh Nguyen
+ + +Last modified: Tue Jan 19 16:18:37 PST 1999 + + + + diff --git a/jdk/test/sun/java2d/loops/CopyAreaSpeed.java b/jdk/test/sun/java2d/loops/CopyAreaSpeed.java new file mode 100644 index 00000000000..00d1cff5c38 --- /dev/null +++ b/jdk/test/sun/java2d/loops/CopyAreaSpeed.java @@ -0,0 +1,268 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* + * @test + * @bug 4189070 + * @summary This test prints out the time it takes for a certain amount of + * copyArea calls to be completed. Because the performance measurement is + * relative, this code only provides a benchmark to run with different releases + * to compare the outcomes. + * @run applet/manual=done CopyAreaSpeed.html + */ + +import java.applet.Applet; +import java.awt.*; +import java.awt.event.*; +import java.util.*; + +public class CopyAreaSpeed extends Applet implements Runnable { + int top = 0; + + public void init() { + } + + public CopyAreaSpeed() + { + super(); + String[] instructions = + { + "This test prints out the time it takes for a certain amount ", + "of copyArea calls to be completed. Because the performance ", + "measurement is relative, this code only provides a benchmark ", + "to run with different releases to compare the outcomes." + }; + Sysout.createDialogWithInstructions( instructions ); + (new Thread(this)).start(); + Button bt = new Button("Hello"); + bt.setBounds(50, 10, 50, 22); + bt.setVisible(false); + add(bt); + } + + public void update(Graphics g) + { + paint(g); + } + + public void paint(Graphics g) + { + synchronized(this) { + Rectangle rct = g.getClipBounds(); + g.setColor(Color.white); + g.fillRect(rct.x, rct.y, rct.width, rct.height); + g.setFont(getFont()); + g.setColor(Color.black); + + Dimension dm = getSize(); + for (int y = 0; y <= (dm.height + 10); y += 20) { + if (y > rct.y) { + int z = y / 20 + top; + g.drawString("" + z, 10, y); + } /* endif */ + } // endfor + } + } + + static long millsec(Date s, Date e) { + long ts = s.getTime(); + long te = e.getTime(); + return te-ts; + } + + public void run() + { + int count = 1000; + int loops = count; + Date start; + Date end; + + start = new Date(); + while (count-- > 0) { + Dimension dm = getSize(); + if (dm != null && dm.width != 0 && dm.height != 0) { + synchronized(this) { + top++; + Graphics g = getGraphics(); + g.copyArea(0, 20, dm.width, dm.height - 20, 0, -20); + g.setClip(0, dm.height - 20, dm.width, 20); + paint(g); + g.dispose(); + } + } + try { + Thread.sleep(1); + } catch(Exception ex) { + ex.printStackTrace(); + } + } + end = new Date(); + Sysout.println("copyArea X "+loops+" = "+ millsec(start, end) + " msec"); + } + + public static void main(String args[]) { + Frame frm = new Frame("CopyAreaSpeed"); + frm.add(new CopyAreaSpeed()); + frm.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent ev) { + System.exit(0); + } + }); + frm.setSize(500, 500); + frm.show(); + } +} +/**************************************************** + Standard Test Machinery + DO NOT modify anything below -- it's a standard + chunk of code whose purpose is to make user + interaction uniform, and thereby make it simpler + to read and understand someone else's test. + ****************************************************/ + +/** + This is part of the standard test machinery. + It creates a dialog (with the instructions), and is the interface + for sending text messages to the user. + To print the instructions, send an array of strings to Sysout.createDialog + WithInstructions method. Put one line of instructions per array entry. + To display a message for the tester to see, simply call Sysout.println + with the string to be displayed. + This mimics System.out.println but works within the test harness as well + as standalone. + */ +class Sysout +{ + private static TestDialog dialog; + + public static void createDialogWithInstructions( String[] instructions ) + { + dialog = new TestDialog( new Frame(), "Instructions" ); + dialog.printInstructions( instructions ); + dialog.show(); + println( "Any messages for the tester will display here." ); + } + + public static void createDialog( ) + { + dialog = new TestDialog( new Frame(), "Instructions" ); + String[] defInstr = { "Instructions will appear here. ", "" } ; + dialog.printInstructions( defInstr ); + dialog.show(); + println( "Any messages for the tester will display here." ); + } + + + public static void printInstructions( String[] instructions ) + { + dialog.printInstructions( instructions ); + } + + + public static void println( String messageIn ) + { + dialog.displayMessage( messageIn ); + } + +}// Sysout class + +/** + This is part of the standard test machinery. It provides a place for the + test instructions to be displayed, and a place for interactive messages + to the user to be displayed. + To have the test instructions displayed, see Sysout. + To have a message to the user be displayed, see Sysout. + Do not call anything in this dialog directly. + */ +class TestDialog extends Dialog +{ + + TextArea instructionsText; + TextArea messageText; + int maxStringLength = 80; + + //DO NOT call this directly, go through Sysout + public TestDialog( Frame frame, String name ) + { + super( frame, name ); + int scrollBoth = TextArea.SCROLLBARS_BOTH; + instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth ); + add( "North", instructionsText ); + + messageText = new TextArea( "", 5, maxStringLength, scrollBoth ); + add("South", messageText); + + pack(); + + show(); + }// TestDialog() + + //DO NOT call this directly, go through Sysout + public void printInstructions( String[] instructions ) + { + //Clear out any current instructions + instructionsText.setText( "" ); + + //Go down array of instruction strings + + String printStr, remainingStr; + for( int i=0; i < instructions.length; i++ ) + { + //chop up each into pieces maxSringLength long + remainingStr = instructions[ i ]; + while( remainingStr.length() > 0 ) + { + //if longer than max then chop off first max chars to print + if( remainingStr.length() >= maxStringLength ) + { + //Try to chop on a word boundary + int posOfSpace = remainingStr. + lastIndexOf( ' ', maxStringLength - 1 ); + + if( posOfSpace <= 0 ) { + posOfSpace = maxStringLength - 1; + } + + printStr = remainingStr.substring( 0, posOfSpace + 1 ); + remainingStr = remainingStr.substring( posOfSpace + 1 ); + } + else //else just print + { + printStr = remainingStr; + remainingStr = ""; + } + + instructionsText.append( printStr + "\n" ); + + }// while + + }// for + + }//printInstructions() + + //DO NOT call this directly, go through Sysout + public void displayMessage( String messageIn ) + { + messageText.append( messageIn + "\n" ); + } + +}// TestDialog class From 6a2fabcbd7bd90f2ef7e30144894dba49efcacb4 Mon Sep 17 00:00:00 2001 From: Ambarish Rapte Date: Wed, 30 Sep 2015 17:46:11 +0400 Subject: [PATCH 02/17] 8040322: TextArea.replaceRange() and insert() are broken with setText(null) Reviewed-by: serb, azvegint --- .../share/classes/java/awt/TextArea.java | 10 +- .../TextAreaEditing/TextAreaEditing.java | 145 ++++++++++++++++++ 2 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 jdk/test/java/awt/TextArea/TextAreaEditing/TextAreaEditing.java diff --git a/jdk/src/java.desktop/share/classes/java/awt/TextArea.java b/jdk/src/java.desktop/share/classes/java/awt/TextArea.java index 6579a35a3d1..eab879730de 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/TextArea.java +++ b/jdk/src/java.desktop/share/classes/java/awt/TextArea.java @@ -327,9 +327,8 @@ public class TextArea extends TextComponent { TextAreaPeer peer = (TextAreaPeer)this.peer; if (peer != null) { peer.insert(str, pos); - } else { - text = text.substring(0, pos) + str + text.substring(pos); } + text = text.substring(0, pos) + str + text.substring(pos); } /** @@ -355,11 +354,7 @@ public class TextArea extends TextComponent { */ @Deprecated public synchronized void appendText(String str) { - if (peer != null) { insertText(str, getText().length()); - } else { - text = text + str; - } } /** @@ -403,9 +398,8 @@ public class TextArea extends TextComponent { TextAreaPeer peer = (TextAreaPeer)this.peer; if (peer != null) { peer.replaceRange(str, start, end); - } else { - text = text.substring(0, start) + str + text.substring(end); } + text = text.substring(0, start) + str + text.substring(end); } /** diff --git a/jdk/test/java/awt/TextArea/TextAreaEditing/TextAreaEditing.java b/jdk/test/java/awt/TextArea/TextAreaEditing/TextAreaEditing.java new file mode 100644 index 00000000000..f3306784ef8 --- /dev/null +++ b/jdk/test/java/awt/TextArea/TextAreaEditing/TextAreaEditing.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + @test + @bug 8040322 + @summary Test TextArea APIs replaceRange, insert, append & setText + @run main TextAreaEditing + */ + +import java.awt.Frame; +import java.awt.TextArea; + +public class TextAreaEditing { + + private int testFailCount; + private boolean isTestFail; + private StringBuilder testFailMessage; + + private Frame mainFrame; + private TextArea textArea; + + private TextAreaEditing() { + testFailMessage = new StringBuilder(); + mainFrame = new Frame(); + mainFrame.setSize(200, 200); + + textArea = new TextArea(); + mainFrame.add(textArea); + mainFrame.setVisible(true); + } + + private void dispose() { + if (mainFrame != null) { + mainFrame.dispose(); + } + } + + public static void main(String[] s) { + TextAreaEditing textArea = new TextAreaEditing(); + textArea.testReplaceRange(); + textArea.testInsert(); + textArea.testAppend(); + textArea.checkFailures(); + textArea.dispose(); + } + + private void testReplaceRange() { + textArea.setText(null); + textArea.replaceRange("Replace", 0, 0); + textArea.setText(null); + checkTest(""); + + textArea.setText("SetText"); + textArea.replaceRange("Replace", 0, 3); + checkTest("ReplaceText"); + + textArea.replaceRange("String", textArea.getText().length(), + textArea.getText().length()); + checkTest("ReplaceTextString"); + + textArea.replaceRange("String", 0, 0); + checkTest("StringReplaceTextString"); + + textArea.replaceRange("replaceRange", 0, textArea.getText().length()); + checkTest("replaceRange"); + } + + private void testInsert() { + textArea.setText(null); + textArea.insert("Insert", 0); + textArea.setText(""); + checkTest(""); + + textArea.setText("SetText"); + textArea.insert("Insert", 3); + checkTest("SetInsertText"); + + textArea.insert("Insert", 0); + checkTest("InsertSetInsertText"); + + textArea.insert("Insert", textArea.getText().length()); + checkTest("InsertSetInsertTextInsert"); + } + + private void testAppend() { + textArea.setText(null); + textArea.append("Append"); + textArea.setText(null); + checkTest(""); + + textArea.setText("SetText"); + textArea.append("Append"); + checkTest("SetTextAppend"); + + textArea.append(""); + checkTest("SetTextAppend"); + textArea.setText(""); + checkTest(""); + } + + private void checkTest(String str) { + if (str != null && !str.equals(textArea.getText())) { + testFailMessage.append("TestFail line : "); + testFailMessage.append(Thread.currentThread().getStackTrace()[2]. + getLineNumber()); + testFailMessage.append(" TextArea string : \""); + testFailMessage.append(textArea.getText()); + testFailMessage.append("\" does not match expected string : \""); + testFailMessage.append(str).append("\""); + testFailMessage.append(System.getProperty("line.separator")); + testFailCount++; + isTestFail = true; + } + } + + private void checkFailures() { + if (isTestFail) { + testFailMessage.insert(0, "Test Fail count : " + testFailCount + + System.getProperty("line.separator")); + dispose(); + throw new RuntimeException(testFailMessage.toString()); + } + } +} From e57e3d381086b25fa9631bf05b9de0b434cdffdc Mon Sep 17 00:00:00 2001 From: Alexander Scherbatiy Date: Fri, 2 Oct 2015 10:29:36 +0400 Subject: [PATCH 03/17] 8138674: Some platforms may not support showing the user-specified title in a file dialog Reviewed-by: serb --- .../share/classes/java/awt/FileDialog.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/jdk/src/java.desktop/share/classes/java/awt/FileDialog.java b/jdk/src/java.desktop/share/classes/java/awt/FileDialog.java index 44fa670c4f6..5b9c17d58ce 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/FileDialog.java +++ b/jdk/src/java.desktop/share/classes/java/awt/FileDialog.java @@ -174,6 +174,12 @@ public class FileDialog extends Dialog { * Creates a file dialog for loading a file. The title of the * file dialog is initially empty. This is a convenience method for * FileDialog(parent, "", LOAD). + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @since 1.1 @@ -187,6 +193,12 @@ public class FileDialog extends Dialog { * a file. The files shown are those in the current directory. * This is a convenience method for * FileDialog(parent, title, LOAD). + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @param title the title of the dialog @@ -204,6 +216,12 @@ public class FileDialog extends Dialog { * in the current directory. If the value of * mode is SAVE, the file dialog is finding * a place to write a file. + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @param title the title of the dialog @@ -224,6 +242,12 @@ public class FileDialog extends Dialog { * Creates a file dialog for loading a file. The title of the * file dialog is initially empty. This is a convenience method for * FileDialog(parent, "", LOAD). + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @exception java.lang.IllegalArgumentException if the parent's @@ -245,6 +269,12 @@ public class FileDialog extends Dialog { * a file. The files shown are those in the current directory. * This is a convenience method for * FileDialog(parent, title, LOAD). + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @param title the title of the dialog; a null value @@ -273,6 +303,12 @@ public class FileDialog extends Dialog { * in the current directory. If the value of * mode is SAVE, the file dialog is finding * a place to write a file. + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. * * @param parent the owner of the dialog * @param title the title of the dialog; a null value @@ -300,6 +336,22 @@ public class FileDialog extends Dialog { setLayout(null); } + + /** + * {@inheritDoc} + *

+ * Note: Some platforms may not support + * showing the user-specified title in a file dialog. + * In this situation, either no title will be displayed in the file dialog's + * title bar or, on some systems, the file dialog's title bar will not be + * displayed. + */ + @Override + public void setTitle(String title) { + super.setTitle(title); + } + + /** * Constructs a name for this component. Called by getName() * when the name is null. From 8ec737728d9a759179ff8d729fcb9fa2bc1b9ca6 Mon Sep 17 00:00:00 2001 From: Rajeev Chamyal Date: Fri, 2 Oct 2015 17:12:47 +0400 Subject: [PATCH 04/17] 8067346: Swing submenu has a changed starting offset Reviewed-by: serb, alexsch --- .../plaf/windows/WindowsLookAndFeel.java | 47 +++--- .../share/classes/sun/awt/OSInfo.java | 2 + .../javax/swing/JMenu/8067346/bug8067346.java | 142 ++++++++++++++++++ 3 files changed, 171 insertions(+), 20 deletions(-) create mode 100644 jdk/test/javax/swing/JMenu/8067346/bug8067346.java diff --git a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java index abdcb841f9a..16bb987de3a 100644 --- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java +++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java @@ -1569,6 +1569,11 @@ public class WindowsLookAndFeel extends BasicLookAndFeel && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) >= 0; } + static boolean isOnWindows7() { + return OSInfo.getOSType() == OSInfo.OSType.WINDOWS + && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_7) >= 0; + } + private void initVistaComponentDefaults(UIDefaults table) { if (! isOnVista()) { return; @@ -1638,28 +1643,30 @@ public class WindowsLookAndFeel extends BasicLookAndFeel } table.putDefaults(menuDefaults); - /* no margins */ - InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0); - for (int i = 0, j = 0; i < menuClasses.length; i++) { - String key = menuClasses[i] + ".margin"; - Object oldValue = table.get(key); - menuDefaults[j++] = key; - menuDefaults[j++] = new XPValue(insets, oldValue); - } - table.putDefaults(menuDefaults); + /*For Windows7 margin and checkIconOffset should be greater than 0 */ + if (!isOnWindows7()) { + /* no margins */ + InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0); + for (int i = 0, j = 0; i < menuClasses.length; i++) { + String key = menuClasses[i] + ".margin"; + Object oldValue = table.get(key); + menuDefaults[j++] = key; + menuDefaults[j++] = new XPValue(insets, oldValue); + } + table.putDefaults(menuDefaults); - /* set checkIcon offset */ - Integer checkIconOffsetInteger = - Integer.valueOf(0); - for (int i = 0, j = 0; i < menuClasses.length; i++) { - String key = menuClasses[i] + ".checkIconOffset"; - Object oldValue = table.get(key); - menuDefaults[j++] = key; - menuDefaults[j++] = - new XPValue(checkIconOffsetInteger, oldValue); + /* set checkIcon offset */ + Integer checkIconOffsetInteger = + Integer.valueOf(0); + for (int i = 0, j = 0; i < menuClasses.length; i++) { + String key = menuClasses[i] + ".checkIconOffset"; + Object oldValue = table.get(key); + menuDefaults[j++] = key; + menuDefaults[j++] = + new XPValue(checkIconOffsetInteger, oldValue); + } + table.putDefaults(menuDefaults); } - table.putDefaults(menuDefaults); - /* set width of the gap after check icon */ Integer afterCheckIconGap = WindowsPopupMenuUI.getSpanBeforeGutter() + WindowsPopupMenuUI.getGutterWidth() diff --git a/jdk/src/java.desktop/share/classes/sun/awt/OSInfo.java b/jdk/src/java.desktop/share/classes/sun/awt/OSInfo.java index 57226bef8ca..b5c6bd7eb89 100644 --- a/jdk/src/java.desktop/share/classes/sun/awt/OSInfo.java +++ b/jdk/src/java.desktop/share/classes/sun/awt/OSInfo.java @@ -56,6 +56,7 @@ public class OSInfo { public static final WindowsVersion WINDOWS_XP = new WindowsVersion(5, 1); public static final WindowsVersion WINDOWS_2003 = new WindowsVersion(5, 2); public static final WindowsVersion WINDOWS_VISTA = new WindowsVersion(6, 0); + public static final WindowsVersion WINDOWS_7 = new WindowsVersion(6, 1); private static final String OS_NAME = "os.name"; private static final String OS_VERSION = "os.version"; @@ -70,6 +71,7 @@ public class OSInfo { windowsVersionMap.put(WINDOWS_XP.toString(), WINDOWS_XP); windowsVersionMap.put(WINDOWS_2003.toString(), WINDOWS_2003); windowsVersionMap.put(WINDOWS_VISTA.toString(), WINDOWS_VISTA); + windowsVersionMap.put(WINDOWS_VISTA.toString(), WINDOWS_7); } private static final PrivilegedAction osTypeAction = new PrivilegedAction() { diff --git a/jdk/test/javax/swing/JMenu/8067346/bug8067346.java b/jdk/test/javax/swing/JMenu/8067346/bug8067346.java new file mode 100644 index 00000000000..ffa2fe4a034 --- /dev/null +++ b/jdk/test/javax/swing/JMenu/8067346/bug8067346.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 8067346 + @summary Submenu has a changed offset on Windows7 with Windows look and feel + @requires (os.family == "windows") + @run main bug8067346 + */ +import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; +import java.awt.Insets; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + + +public class bug8067346 { + + private JMenuBar menuBar; + private JFrame frame; + private String[] menuClasses = {"MenuItem", "Menu", + "CheckBoxMenuItem", "RadioButtonMenuItem"}; + private String MARGIN = ".margin"; + private String CHECKICONOFFSET = ".checkIconOffset"; + private static boolean runTest = true; + + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + + @Override + public void run() { + bug8067346 test = new bug8067346(); + try { + // set windows look and feel + UIManager.setLookAndFeel(new WindowsLookAndFeel()); + } catch (UnsupportedLookAndFeelException e) { + runTest = false; + } + if(runTest) { + test.createUI(); + test.performTest(); + test.dispose(); + } + } + }); + } + + public void createUI() { + + frame = new JFrame(); + menuBar = new JMenuBar(); + frame.setJMenuBar(menuBar); + JMenu menu, submenu; + JMenuItem menuItem; + + menu = new JMenu("A Menu"); + menuBar.add(menu); + menu.addSeparator(); + + submenu = new JMenu("A submenu"); + + menuItem = new JMenuItem("An item in the submenu"); + submenu.add(menuItem); + menu.add(submenu); + } + + public void performTest() { + try { + String errorMessage = "Incorrect value for "; + StringBuilder errorMessageBuilder = new StringBuilder(errorMessage); + boolean error = false; + int retVal = testMargin(); + if (retVal != 0) { + errorMessageBuilder.append(menuClasses[retVal]) + .append(MARGIN).append("\n"); + error = true; + } + retVal = testCheckIconOffset(); + if (retVal != 0) { + errorMessageBuilder.append(errorMessage) + .append(menuClasses[retVal]).append(CHECKICONOFFSET); + } + if (error || retVal != 0) { + throw new RuntimeException(errorMessageBuilder.toString()); + } + } finally { + dispose(); + } + } + + private int testMargin() { + + for (int inx = 0; inx < menuClasses.length; inx++) { + Insets margin = (Insets) UIManager.get(menuClasses[inx] + MARGIN); + if (margin != null && margin.bottom == 0 && margin.left == 0 + && margin.right == 0 && margin.top == 0) { + return inx + 1; + } + } + return 0; + } + + private int testCheckIconOffset() { + + for (int inx = 0; inx < menuClasses.length; inx++) { + Object checkIconOffset = UIManager.get(menuClasses[inx] + + CHECKICONOFFSET); + if (checkIconOffset != null && ((Integer) checkIconOffset) == 0) { + return inx + 1; + } + } + return 0; + } + + public void dispose() { + frame.dispose(); + } +} From 93b47119484e0bd4170e07f9f8a0806dae2ed0fb Mon Sep 17 00:00:00 2001 From: Semyon Sadetsky Date: Mon, 5 Oct 2015 15:13:14 +0300 Subject: [PATCH 05/17] 8058959: closed/java/awt/event/ComponentEvent/MovedResizedTwiceTest/MovedResizedTwiceTest.java failed automatically Reviewed-by: alexsch, serb --- .../java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java index 0df07fb6fd7..d5e2a0be3cd 100644 --- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java +++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java @@ -792,8 +792,8 @@ abstract class XDecoratedPeer extends XWindowPeer { XToolkit.awtLock(); try { updateSizeHints(rec.x, rec.y, rec.width, rec.height); - XlibWrapper.XResizeWindow(XToolkit.getDisplay(), getShell(), rec.width, rec.height); - XlibWrapper.XMoveWindow(XToolkit.getDisplay(), getShell(), rec.x, rec.y); + XlibWrapper.XMoveResizeWindow(XToolkit.getDisplay(), getShell(), + rec.x, rec.y, rec.width, rec.height); } finally { XToolkit.awtUnlock(); From 4a3dff3ee5723f53fa7453aef9b3413d2de961e5 Mon Sep 17 00:00:00 2001 From: Semyon Sadetsky Date: Mon, 5 Oct 2015 15:29:23 +0300 Subject: [PATCH 06/17] 8079595: Resizing dialog which is JWindow parent makes JVM crash Reviewed-by: alexsch, serb --- .../native/libawt/windows/awt_Component.cpp | 9 +- .../ShowChildWhileResizingTest.java | 88 +++++++++++++++++++ 2 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java diff --git a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp index 07669bc9e11..6b1c1255319 100644 --- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp +++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp @@ -4058,14 +4058,19 @@ HWND AwtComponent::GetProxyFocusOwner() return (HWND)NULL; } -/* Call DefWindowProc for the focus proxy, if any */ +/* Redirects message to the focus proxy, if any */ void AwtComponent::CallProxyDefWindowProc(UINT message, WPARAM wParam, LPARAM lParam, LRESULT &retVal, MsgRouting &mr) { if (mr != mrConsume) { HWND proxy = GetProxyFocusOwner(); if (proxy != NULL && ::IsWindowEnabled(proxy)) { - retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL, proxy, message, wParam, lParam); + if (proxy != GetHWnd()) { + retVal = ::SendMessage(proxy, message, wParam, lParam); + } else { + retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL, + proxy, message, wParam, lParam); + } mr = mrConsume; } } diff --git a/jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java b/jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java new file mode 100644 index 00000000000..ee722f44236 --- /dev/null +++ b/jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 8079595 + @summary Resizing dialog which is JWindow parent makes JVM crash + @author Semyon Sadetsky + */ + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.InputEvent; + +public class ShowChildWhileResizingTest { + + private static Window dialog; + private static Timer timer; + private static Point point; + + public static void main(String[] args) throws Exception { + dialog = new Frame(); + dialog.add(new JPanel()); + dialog.setVisible(true); + dialog.setBounds(100, 100, 200, 200); + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + final Window dependentWindow = new JWindow(dialog); + JPanel panel = new JPanel(); + panel.add(new JButton("button")); + dependentWindow.add(panel); + dependentWindow.setVisible(true); + dependentWindow.setBounds(0, 0, 50, 50); + timer = new Timer(100, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + dependentWindow + .setVisible(!dependentWindow.isVisible()); + } + }); + timer.start(); + } + + }); + + Robot robot = new Robot(); + robot.setAutoDelay(5); + robot.delay(300); + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + point = dialog.getLocationOnScreen(); + } + }); + robot.mouseMove(point.x + 200 - dialog.getInsets().right/2, + point.y + 200 - dialog.getInsets().bottom/2); + robot.mousePress(InputEvent.BUTTON1_MASK); + for(int i = 0; i < 100; i++) { + robot.mouseMove(point.x + 200 + i, point.y + 200 + i); + } + robot.mouseRelease(InputEvent.BUTTON1_MASK); + timer.stop(); + dialog.dispose(); + System.out.println("ok"); + } +} From 13ee9e097fed00f39dc9f7253cc329bce136acdf Mon Sep 17 00:00:00 2001 From: Prasanta Sadhukhan Date: Mon, 5 Oct 2015 15:36:43 +0300 Subject: [PATCH 07/17] 8132985: Crash in freetypescaler.c due to double free Reviewed-by: prr, simonis --- .../native/libfontmanager/freetypeScaler.c | 25 +++--- .../FontDisposer/FontDisposeTest.java | 84 +++++++++++++++++++ 2 files changed, 95 insertions(+), 14 deletions(-) create mode 100644 jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java diff --git a/jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c b/jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c index 7ba84cada65..8f8c33139d9 100644 --- a/jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c +++ b/jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c @@ -60,6 +60,7 @@ typedef struct { JNIEnv* env; FT_Library library; FT_Face face; + FT_Stream faceStream; jobject font2D; jobject directBuffer; @@ -107,16 +108,10 @@ static void freeNativeResources(JNIEnv *env, FTScalerInfo* scalerInfo) { if (scalerInfo == NULL) return; - //apparently Done_Face will only close the stream - // but will not relase the memory of stream structure. - // We need to free it explicitly to avoid leak. - //Direct access to the stream field might be not ideal solution as - // it is considred to be "private". - //Alternatively we could have stored pointer to the structure - // in the scalerInfo but this will increase size of the structure - // for no good reason - stream = scalerInfo->face->stream; - + // FT_Done_Face always closes the stream, but only frees the memory + // of the data structure if it was internally allocated by FT. + // We hold on to a pointer to the stream structure if we provide it + // ourselves, so that we can free it here. FT_Done_Face(scalerInfo->face); FT_Done_FreeType(scalerInfo->library); @@ -128,10 +123,9 @@ static void freeNativeResources(JNIEnv *env, FTScalerInfo* scalerInfo) { free(scalerInfo->fontData); } - if (stream != NULL) { - free(stream); - } - + if (scalerInfo->faceStream != NULL) { + free(scalerInfo->faceStream); + } free(scalerInfo); } @@ -302,6 +296,9 @@ Java_sun_font_FreetypeFontScaler_initNativeScaler( &ft_open_args, indexInCollection, &scalerInfo->face); + if (!error) { + scalerInfo->faceStream = ftstream; + } } if (error || scalerInfo->directBuffer == NULL) { free(ftstream); diff --git a/jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java b/jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java new file mode 100644 index 00000000000..319dcbd4562 --- /dev/null +++ b/jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.font.FontRenderContext; +import java.awt.image.BufferedImage; +import java.io.FileInputStream; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import sun.font.Font2DHandle; +import sun.font.Font2D; +import sun.font.FontScaler; +import sun.font.Type1Font; + +/** + * @bug 8132985 + * @summary Tests to verify Type1 Font scaler dispose crashes + * @modules java.desktop/sun.font + */ +public class FontDisposeTest +{ + public static void main(String[] args) throws Exception + { + // The bug only happens with Type 1 fonts. The Ghostscript font files + // should be commonly available. From distro pacakge or + // ftp://ftp.gnu.org/gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz + // Pass pfa/pfb font file as argument + String path = args[0]; + + // Load + InputStream stream = new FileInputStream(path); + Font font = Font.createFont(Font.TYPE1_FONT,stream); + + // Ensure native bits have been generated + BufferedImage img = new BufferedImage(100,100, + BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = img.createGraphics(); + FontRenderContext frc = g2d.getFontRenderContext(); + + font.getLineMetrics("derp",frc); + + // Force disposal - + // System.gc() is not sufficient. + Field font2DHandleField = Font.class.getDeclaredField("font2DHandle"); + font2DHandleField.setAccessible(true); + sun.font.Font2DHandle font2DHandle = + (sun.font.Font2DHandle)font2DHandleField.get(font); + + sun.font.Font2D font2D = font2DHandle.font2D; + sun.font.Type1Font type1Font = (sun.font.Type1Font)font2D; + + Method getScalerMethod = + sun.font.Type1Font.class.getDeclaredMethod("getScaler"); + getScalerMethod.setAccessible(true); + sun.font.FontScaler scaler = + (sun.font.FontScaler)getScalerMethod.invoke(type1Font); + + // dispose should not crash due to double free + scaler.dispose(); + } +} From 329d125db728a53dda9b316b9738958f268bdcd0 Mon Sep 17 00:00:00 2001 From: Mikhail Cherkasov Date: Tue, 6 Oct 2015 10:24:12 +0300 Subject: [PATCH 08/17] 8086038: [macosx] No available data flavors when copying from Microsoft Word for Mac Reviewed-by: serb, alexsch --- .../classes/sun/datatransfer/resources/flavormap.properties | 1 + .../macosx/classes/sun/lwawt/macosx/CDataTransferer.java | 4 +++- .../macosx/native/libawt_lwawt/awt/CDataTransferer.m | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/jdk/src/java.datatransfer/macosx/classes/sun/datatransfer/resources/flavormap.properties b/jdk/src/java.datatransfer/macosx/classes/sun/datatransfer/resources/flavormap.properties index b50c523279e..10d625fc494 100644 --- a/jdk/src/java.datatransfer/macosx/classes/sun/datatransfer/resources/flavormap.properties +++ b/jdk/src/java.datatransfer/macosx/classes/sun/datatransfer/resources/flavormap.properties @@ -74,3 +74,4 @@ RICH_TEXT=text/rtf HTML=text/html;charset=utf-8;eoln="\r\n";terminators=1 URL=application/x-java-url;class=java.net.URL,\ text/uri-list;eoln="\r\n";terminators=1 +XPICT=image/x-pict;class=java.io.InputStream diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java index 2805211d3d1..ae1d4446c05 100644 --- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java +++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java @@ -54,7 +54,8 @@ public class CDataTransferer extends DataTransferer { "PDF", "URL", "PNG", - "JFIF" + "JFIF", + "XPICT" }; static { @@ -78,6 +79,7 @@ public class CDataTransferer extends DataTransferer { public static final int CF_URL = 7; public static final int CF_PNG = 8; public static final int CF_JPEG = 9; + public static final int CF_XPICT = 10; private CDataTransferer() {} diff --git a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m index 6a6339facfe..ed6a7c8bf67 100644 --- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m +++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m @@ -56,6 +56,8 @@ NSMutableDictionary *getMappingTable() { forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PNG]]; [sStandardMappings setObject:(NSString*)kUTTypeJPEG forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_JPEG]]; + [sStandardMappings setObject:NSPICTPboardType + forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_XPICT]]; } return sStandardMappings; } From 66383b080d0979708b574ee538fc39c01ef17132 Mon Sep 17 00:00:00 2001 From: Sergey Bylokhov Date: Wed, 7 Oct 2015 19:47:35 +0300 Subject: [PATCH 09/17] 4763438: Replace uses of @beaninfo with meta facility in core j2se Reviewed-by: alexsch, erikj --- jdk/make/gensrc/GensrcSwing.gmk | 69 +----- .../share/classes/java/awt/Button.java | 6 +- .../share/classes/java/awt/Component.java | 14 -- .../share/classes/java/awt/Container.java | 10 - .../java/awt/KeyboardFocusManager.java | 14 -- .../classes/java/beans/SimpleBeanInfo.java | 65 +++++- .../accessibility/AccessibleContext.java | 26 +-- .../classes/javax/swing/AbstractButton.java | 210 +++++++----------- .../share/classes/javax/swing/Box.java | 11 +- .../share/classes/javax/swing/ImageIcon.java | 8 +- .../share/classes/javax/swing/JApplet.java | 52 ++--- .../share/classes/javax/swing/JButton.java | 37 ++- .../share/classes/javax/swing/JCheckBox.java | 30 +-- .../javax/swing/JCheckBoxMenuItem.java | 26 +-- .../classes/javax/swing/JColorChooser.java | 55 ++--- .../share/classes/javax/swing/JComboBox.java | 108 ++++----- .../share/classes/javax/swing/JComponent.java | 165 ++++++-------- .../classes/javax/swing/JDesktopPane.java | 37 ++- .../share/classes/javax/swing/JDialog.java | 66 ++---- .../classes/javax/swing/JEditorPane.java | 37 ++- .../classes/javax/swing/JFileChooser.java | 158 +++++-------- .../javax/swing/JFormattedTextField.java | 49 ++-- .../share/classes/javax/swing/JFrame.java | 70 +++--- .../classes/javax/swing/JInternalFrame.java | 147 +++++------- .../share/classes/javax/swing/JLabel.java | 138 ++++-------- .../classes/javax/swing/JLayeredPane.java | 8 +- .../share/classes/javax/swing/JList.java | 124 +++++------ .../share/classes/javax/swing/JMenu.java | 58 ++--- .../share/classes/javax/swing/JMenuBar.java | 44 ++-- .../share/classes/javax/swing/JMenuItem.java | 46 ++-- .../classes/javax/swing/JOptionPane.java | 88 +++----- .../share/classes/javax/swing/JPanel.java | 23 +- .../classes/javax/swing/JPasswordField.java | 21 +- .../share/classes/javax/swing/JPopupMenu.java | 80 +++---- .../classes/javax/swing/JProgressBar.java | 94 +++----- .../classes/javax/swing/JRadioButton.java | 25 +-- .../javax/swing/JRadioButtonMenuItem.java | 20 +- .../share/classes/javax/swing/JRootPane.java | 41 ++-- .../share/classes/javax/swing/JScrollBar.java | 78 +++---- .../classes/javax/swing/JScrollPane.java | 112 +++------- .../share/classes/javax/swing/JSeparator.java | 33 ++- .../share/classes/javax/swing/JSlider.java | 122 ++++------ .../share/classes/javax/swing/JSpinner.java | 26 +-- .../share/classes/javax/swing/JSplitPane.java | 106 ++++----- .../classes/javax/swing/JTabbedPane.java | 132 ++++------- .../share/classes/javax/swing/JTable.java | 191 +++++++--------- .../share/classes/javax/swing/JTextArea.java | 46 ++-- .../share/classes/javax/swing/JTextField.java | 52 +++-- .../share/classes/javax/swing/JTextPane.java | 19 +- .../classes/javax/swing/JToggleButton.java | 22 +- .../share/classes/javax/swing/JToolBar.java | 65 ++---- .../share/classes/javax/swing/JToolTip.java | 15 +- .../share/classes/javax/swing/JTree.java | 137 ++++++------ .../share/classes/javax/swing/JViewport.java | 23 +- .../share/classes/javax/swing/JWindow.java | 53 ++--- .../AbstractColorChooserPanel.java | 10 +- .../javax/swing/table/JTableHeader.java | 24 +- .../javax/swing/table/TableColumn.java | 56 ++--- .../javax/swing/text/JTextComponent.java | 100 ++++----- .../javax/swing/tree/AbstractLayoutCache.java | 16 +- .../swing/tree/DefaultTreeCellEditor.java | 9 +- .../swing/tree/VariableHeightLayoutCache.java | 18 +- 62 files changed, 1468 insertions(+), 2277 deletions(-) diff --git a/jdk/make/gensrc/GensrcSwing.gmk b/jdk/make/gensrc/GensrcSwing.gmk index 74b4f8a81dd..2f643d4abc2 100644 --- a/jdk/make/gensrc/GensrcSwing.gmk +++ b/jdk/make/gensrc/GensrcSwing.gmk @@ -41,71 +41,4 @@ $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus: $(NIMBUS_SKIN_FI GENSRC_SWING_NIMBUS := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus -# -# Generate beaninfo java files -# - -BEANINFO_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/gensrc_no_docs/java.desktop -DOCLET_DATA_DIR := $(JDK_TOPDIR)/make/data/swingbeaninfo - -# javax.swing package -BEANS = AbstractButton Box JComponent JApplet JButton \ - JCheckBox JCheckBoxMenuItem JComboBox JColorChooser \ - JDesktopPane JDialog JEditorPane JFileChooser JFrame \ - JFormattedTextField JInternalFrame JLabel JLayeredPane \ - JList JMenu JMenuBar JMenuItem JOptionPane JPanel \ - JPasswordField JPopupMenu JProgressBar JRadioButton \ - JRadioButtonMenuItem JScrollBar JScrollPane JSeparator \ - JSlider JSplitPane JSpinner JTabbedPane JTable \ - JTextArea JTextField JTextPane JToggleButton JToolBar \ - JTree JWindow - -# javax.swing.text package -BEANS_TEXT = JTextComponent - -BEANS_SRC = $(BEANS:%=$(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/%.java) \ - $(BEANS_TEXT:%=$(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/text/%.java) - -# Dummy variable so far, in the old build system it was false by default -SWINGBEAN_DEBUG_FLAG = false -# GenDocletBeanInfo is compiled in Tools.gmk and picks up from $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes -# LocaleDataMetaInfo needs to be generated before running this to avoid confusing errors -# in the build log. -$(BEANINFO_OUTPUTDIR)/_the.generated_beaninfo: $(BEANS_SRC) \ - $(BEANINFO_OUTPUTDIR)/javax/swing/SwingBeanInfoBase.java \ - $(BEANINFO_OUTPUTDIR)/sun/swing/BeanInfoUtils.java $(BUILD_TOOLS_JDK) - $(ECHO) Generating beaninfo - $(MKDIR) -p $(BEANINFO_OUTPUTDIR)/javax/swing - $(JAVA) -Djava.awt.headless=true $(NEW_JAVADOC) \ - -sourcepath $(call PathList,\ - $(wildcard $(JDK_TOPDIR)/src/*/*/classes) \ - $(SUPPORT_OUTPUTDIR)/gensrc/java.base) \ - -doclet build.tools.swingbeaninfo.GenDocletBeanInfo \ - -x $(SWINGBEAN_DEBUG_FLAG) -d $(BEANINFO_OUTPUTDIR)/javax/swing \ - -t $(DOCLET_DATA_DIR)/SwingBeanInfo.template \ - -docletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \ - -XDignore.symbol.file=true \ - -classpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes $(BEANS_SRC) $(LOG_INFO) - # Move the JTextComponent into its proper package directory. - $(MKDIR) -p $(BEANINFO_OUTPUTDIR)/javax/swing/text - $(MV) $(BEANINFO_OUTPUTDIR)/javax/swing/JTextComponentBeanInfo.java \ - $(BEANINFO_OUTPUTDIR)/javax/swing/text/JTextComponentBeanInfo.java - $(TOUCH) $@ - -# This file is the part of dt.jar -# For some reason it is under $(JDK_TOPDIR)/make/data/swingbeaninfo -# Should it be moved under $(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing instead? -$(BEANINFO_OUTPUTDIR)/javax/swing/SwingBeanInfoBase.java: \ - $(DOCLET_DATA_DIR)/javax/swing/SwingBeanInfoBase.java - $(call install-file) - -# This file is the part of dt.jar -# For some reason it is under $(JDK_TOPDIR)/make/data/swingbeaninfo -# Should it be moved under $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/swing instead? -$(BEANINFO_OUTPUTDIR)/sun/swing/BeanInfoUtils.java: \ - $(DOCLET_DATA_DIR)/sun/swing/BeanInfoUtils.java - $(call install-file) - -GENSRC_SWING_BEANINFO = $(BEANINFO_OUTPUTDIR)/_the.generated_beaninfo - -GENSRC_JAVA_DESKTOP += $(GENSRC_SWING_BEANINFO) $(GENSRC_SWING_NIMBUS) +GENSRC_JAVA_DESKTOP += $(GENSRC_SWING_NIMBUS) diff --git a/jdk/src/java.desktop/share/classes/java/awt/Button.java b/jdk/src/java.desktop/share/classes/java/awt/Button.java index 5c92ce22486..faa8068cf8c 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/Button.java +++ b/jdk/src/java.desktop/share/classes/java/awt/Button.java @@ -26,6 +26,7 @@ package java.awt; import java.awt.peer.ButtonPeer; +import java.beans.BeanProperty; import java.util.EventListener; import java.awt.event.*; import java.io.ObjectOutputStream; @@ -511,11 +512,10 @@ public class Button extends Component implements Accessible { * * @return an AccessibleAWTButton that serves as the * AccessibleContext of this Button - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this Button. * @since 1.3 */ + @BeanProperty(expert = true, description + = "The AccessibleContext associated with this Button.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleAWTButton(); diff --git a/jdk/src/java.desktop/share/classes/java/awt/Component.java b/jdk/src/java.desktop/share/classes/java/awt/Component.java index 87bab7eac20..3c50dceecce 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/Component.java +++ b/jdk/src/java.desktop/share/classes/java/awt/Component.java @@ -1763,8 +1763,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * is returned * @see #setForeground * @since 1.0 - * @beaninfo - * bound: true */ @Transient public Color getForeground() { @@ -1843,8 +1841,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * component will inherit the background color of its parent * @see #getBackground * @since 1.0 - * @beaninfo - * bound: true */ public void setBackground(Color c) { Color oldColor = background; @@ -1911,8 +1907,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * @see #getFont * @see #invalidate * @since 1.0 - * @beaninfo - * bound: true */ public void setFont(Font f) { Font oldFont, newFont; @@ -7234,8 +7228,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * @param focusable indicates whether this Component is focusable * @see #isFocusable * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusable(boolean focusable) { boolean oldFocusable; @@ -7327,8 +7319,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * or if any keystroke already maps to another focus traversal * operation for this Component * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusTraversalKeys(int id, Set keystrokes) @@ -7479,8 +7469,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * @see #setFocusTraversalKeys * @see #getFocusTraversalKeys * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusTraversalKeysEnabled(boolean focusTraversalKeysEnabled) { @@ -8995,8 +8983,6 @@ public abstract class Component implements ImageObserver, MenuContainer, * @see #invalidate * * @author Laura Werner, IBM - * @beaninfo - * bound: true */ public void setComponentOrientation(ComponentOrientation o) { ComponentOrientation oldValue = componentOrientation; diff --git a/jdk/src/java.desktop/share/classes/java/awt/Container.java b/jdk/src/java.desktop/share/classes/java/awt/Container.java index 6e19e26c5d5..f3e7b3b5d6e 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/Container.java +++ b/jdk/src/java.desktop/share/classes/java/awt/Container.java @@ -3131,8 +3131,6 @@ public class Container extends Component { * or if any keystroke already maps to another focus traversal * operation for this Container * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusTraversalKeys(int id, Set keystrokes) @@ -3347,8 +3345,6 @@ public class Container extends Component { * @see #setFocusCycleRoot * @see #isFocusCycleRoot * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusTraversalPolicy(FocusTraversalPolicy policy) { FocusTraversalPolicy oldPolicy; @@ -3427,8 +3423,6 @@ public class Container extends Component { * @see ContainerOrderFocusTraversalPolicy * @see #setFocusTraversalPolicyProvider * @since 1.4 - * @beaninfo - * bound: true */ public void setFocusCycleRoot(boolean focusCycleRoot) { boolean oldFocusCycleRoot; @@ -3472,8 +3466,6 @@ public class Container extends Component { * @see #getFocusTraversalPolicy * @see #isFocusTraversalPolicyProvider * @since 1.5 - * @beaninfo - * bound: true */ public final void setFocusTraversalPolicyProvider(boolean provider) { boolean oldProvider; @@ -3499,8 +3491,6 @@ public class Container extends Component { * @return true if this container provides focus traversal * policy, false otherwise * @since 1.5 - * @beaninfo - * bound: true */ public final boolean isFocusTraversalPolicyProvider() { return focusTraversalPolicyProvider; diff --git a/jdk/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java b/jdk/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java index 7f1c6dcd88a..75cf0e0c918 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java +++ b/jdk/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java @@ -528,8 +528,6 @@ public abstract class KeyboardFocusManager * current KeyboardFocusManager for the calling thread's context * and if the calling thread does not have "replaceKeyboardFocusManager" * permission - * @beaninfo - * bound: true */ protected void setGlobalFocusOwner(Component focusOwner) throws SecurityException @@ -744,8 +742,6 @@ public abstract class KeyboardFocusManager * current KeyboardFocusManager for the calling thread's context * and if the calling thread does not have "replaceKeyboardFocusManager" * permission - * @beaninfo - * bound: true */ protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner) throws SecurityException @@ -847,8 +843,6 @@ public abstract class KeyboardFocusManager * current KeyboardFocusManager for the calling thread's context * and if the calling thread does not have "replaceKeyboardFocusManager" * permission - * @beaninfo - * bound: true */ protected void setGlobalFocusedWindow(Window focusedWindow) throws SecurityException @@ -952,8 +946,6 @@ public abstract class KeyboardFocusManager * current KeyboardFocusManager for the calling thread's context * and if the calling thread does not have "replaceKeyboardFocusManager" * permission - * @beaninfo - * bound: true */ protected void setGlobalActiveWindow(Window activeWindow) throws SecurityException @@ -1008,8 +1000,6 @@ public abstract class KeyboardFocusManager * @see Container#setFocusTraversalPolicy * @see Container#getFocusTraversalPolicy * @throws IllegalArgumentException if defaultPolicy is null - * @beaninfo - * bound: true */ public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy defaultPolicy) { @@ -1113,8 +1103,6 @@ public abstract class KeyboardFocusManager * represents a {@code KEY_TYPED} event, * or if any keystroke already maps * to another default focus traversal operation - * @beaninfo - * bound: true */ public void setDefaultFocusTraversalKeys(int id, @@ -1272,8 +1260,6 @@ public abstract class KeyboardFocusManager * @see #getGlobalCurrentFocusCycleRoot * @throws SecurityException if the calling thread does not have * "replaceKeyboardFocusManager" permission - * @beaninfo - * bound: true */ public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot) throws SecurityException diff --git a/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java b/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java index 20d23127cdf..ddef0cffad5 100644 --- a/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java +++ b/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java @@ -28,6 +28,8 @@ package java.beans; import java.awt.Image; import java.awt.Toolkit; import java.io.InputStream; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * This is a support class to make it easier for people to provide @@ -41,13 +43,13 @@ import java.io.InputStream; * * @since 1.1 */ - public class SimpleBeanInfo implements BeanInfo { /** * Deny knowledge about the class and customizer of the bean. * You can override this if you wish to provide explicit info. */ + @Override public BeanDescriptor getBeanDescriptor() { return null; } @@ -56,6 +58,7 @@ public class SimpleBeanInfo implements BeanInfo { * Deny knowledge of properties. You can override this * if you wish to provide explicit property info. */ + @Override public PropertyDescriptor[] getPropertyDescriptors() { return null; } @@ -64,6 +67,7 @@ public class SimpleBeanInfo implements BeanInfo { * Deny knowledge of a default property. You can override this * if you wish to define a default property for the bean. */ + @Override public int getDefaultPropertyIndex() { return -1; } @@ -72,6 +76,7 @@ public class SimpleBeanInfo implements BeanInfo { * Deny knowledge of event sets. You can override this * if you wish to provide explicit event set info. */ + @Override public EventSetDescriptor[] getEventSetDescriptors() { return null; } @@ -80,6 +85,7 @@ public class SimpleBeanInfo implements BeanInfo { * Deny knowledge of a default event. You can override this * if you wish to define a default event for the bean. */ + @Override public int getDefaultEventIndex() { return -1; } @@ -88,6 +94,7 @@ public class SimpleBeanInfo implements BeanInfo { * Deny knowledge of methods. You can override this * if you wish to provide explicit method info. */ + @Override public MethodDescriptor[] getMethodDescriptors() { return null; } @@ -97,6 +104,7 @@ public class SimpleBeanInfo implements BeanInfo { * may override this if you want to (for example) return a * BeanInfo for a base class. */ + @Override public BeanInfo[] getAdditionalBeanInfo() { return null; } @@ -105,10 +113,63 @@ public class SimpleBeanInfo implements BeanInfo { * Claim there are no icons available. You can override * this if you want to provide icons for your bean. */ - public Image getIcon(int iconKind) { + @Override + public Image getIcon(final int iconKind) { + final BeanDescriptor descriptor = getBeanDescriptor(); + if (descriptor != null) { + final Class type = descriptor.getBeanClass(); + if (type != null && type.getClassLoader() == null + && type.getAnnotation(JavaBean.class) != null) { + final String name = type.getName(); + final int index = name.lastIndexOf('.'); + if (name.substring(0, index).equals("javax.swing")) { + final String className = type.getSimpleName(); + switch (iconKind) { + case ICON_COLOR_32x32: + return loadImage(className, "Color32.gif"); + case ICON_COLOR_16x16: + return loadImage(className, "Color16.gif"); + case ICON_MONO_32x32: + return loadImage(className, "Mono32.gif"); + case ICON_MONO_16x16: + return loadImage(className, "Mono16.gif"); + } + } + } + } return null; } + /** + * This is a utility method to help in loading standard icon images. + * + * @param resourceName A pathname relative to the directory holding the + * class file of the current class + * @return an image object. May be null if the load failed. + * @see java.beans.SimpleBeanInfo#loadImage(String) + */ + private Image loadStandardImage(final String resourceName) { + return AccessController.doPrivileged( + (PrivilegedAction) () -> loadImage(resourceName)); + } + + /** + * This is a utility method to help in loading standard icon images. + * + * @param resourceName A pathname relative to the directory holding the + * class file of the current class + * @param suffix A {@code String} containing a file suffix (e.g., + * "Color32.gif" or "Mono32.gif") + * @return an image object. May be null if the load failed. + * @see java.beans.SimpleBeanInfo#loadImage(String) + */ + private Image loadImage(final String resourceName, final String suffix) { + final String prefix = "/javax/swing/beaninfo/images/"; + final Image image = loadStandardImage(prefix + resourceName + suffix); + return image == null ? loadStandardImage(prefix + "JComponent" + suffix) + : image; + } + /** * This is a utility method to help in loading icon images. * It takes the name of a resource file associated with the diff --git a/jdk/src/java.desktop/share/classes/javax/accessibility/AccessibleContext.java b/jdk/src/java.desktop/share/classes/javax/accessibility/AccessibleContext.java index b7f584b95db..65a163fa4ca 100644 --- a/jdk/src/java.desktop/share/classes/javax/accessibility/AccessibleContext.java +++ b/jdk/src/java.desktop/share/classes/javax/accessibility/AccessibleContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -29,11 +29,15 @@ import sun.awt.AWTAccessor; import sun.awt.AppContext; import java.util.Locale; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.beans.PropertyChangeEvent; import java.awt.IllegalComponentStateException; +import javax.swing.SwingContainer; + /** * AccessibleContext represents the minimum information all accessible objects * return. This information includes the accessible name, description, role, @@ -69,17 +73,13 @@ import java.awt.IllegalComponentStateException; * minimum and maximum values. Any object that supports a numerical value * should support this interface. * - * - * @beaninfo - * attribute: isContainer false - * description: Minimal information that all accessible objects return - * - * @author Peter Korn * @author Hans Muller * @author Willie Walker * @author Lynn Monsanto */ +@JavaBean(description = "Minimal information that all accessible objects return") +@SwingContainer(false) public abstract class AccessibleContext { /** @@ -447,11 +447,9 @@ public abstract class AccessibleContext { * * @see #getAccessibleName * @see #addPropertyChangeListener - * - * @beaninfo - * preferred: true - * description: Sets the accessible name for the component. */ + @BeanProperty(preferred = true, description + = "Sets the accessible name for the component.") public void setAccessibleName(String s) { String oldName = accessibleName; accessibleName = s; @@ -483,11 +481,9 @@ public abstract class AccessibleContext { * * @see #setAccessibleName * @see #addPropertyChangeListener - * - * @beaninfo - * preferred: true - * description: Sets the accessible description for the component. */ + @BeanProperty(preferred = true, description + = "Sets the accessible description for the component.") public void setAccessibleDescription(String s) { String oldDescription = accessibleDescription; accessibleDescription = s; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/AbstractButton.java b/jdk/src/java.desktop/share/classes/javax/swing/AbstractButton.java index 89da3cf30c9..64ac496c509 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/AbstractButton.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/AbstractButton.java @@ -26,23 +26,19 @@ package javax.swing; import java.awt.*; import java.awt.event.*; -import java.awt.image.*; import java.text.*; import java.awt.geom.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.Transient; import java.util.Enumeration; -import java.util.Vector; import java.io.Serializable; import javax.swing.event.*; -import javax.swing.border.*; import javax.swing.plaf.*; import javax.accessibility.*; import javax.swing.text.*; -import javax.swing.text.html.*; -import javax.swing.plaf.basic.*; -import java.util.*; /** * Defines common behaviors for buttons and menu items. @@ -73,6 +69,7 @@ import java.util.*; * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(defaultProperty = "UI") @SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants { @@ -251,12 +248,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @see Swing Components Supporting * Action * @since 1.6 - * @beaninfo - * bound: true - * expert: true - * description: Whether the text of the button should come from - * the Action. */ + @BeanProperty(expert = true, description + = "Whether the text of the button should come from the Action.") public void setHideActionText(boolean hideActionText) { if (hideActionText != this.hideActionText) { this.hideActionText = hideActionText; @@ -296,12 +290,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the button's text. * @param text the string used to set the text * @see #getText - * @beaninfo - * bound: true - * preferred: true - * attribute: visualUpdate true - * description: The button's text. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The button's text.") public void setText(String text) { String oldValue = this.text; this.text = text; @@ -390,12 +381,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * effectively be ignored). * * @param m the space between the border and the label - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The space between the button's border and the label. */ + @BeanProperty(visualUpdate = true, description + = "The space between the button's border and the label.") public void setMargin(Insets m) { // Cache the old margin if it comes from the UI if(m instanceof UIResource) { @@ -448,11 +436,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param defaultIcon the icon used as the default image * @see #getIcon * @see #setPressedIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The button's default icon */ + @BeanProperty(visualUpdate = true, description + = "The button's default icon") public void setIcon(Icon defaultIcon) { Icon oldValue = this.defaultIcon; this.defaultIcon = defaultIcon; @@ -495,11 +481,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the pressed icon for the button. * @param pressedIcon the icon used as the "pressed" image * @see #getPressedIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The pressed icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The pressed icon for the button.") public void setPressedIcon(Icon pressedIcon) { Icon oldValue = this.pressedIcon; this.pressedIcon = pressedIcon; @@ -529,11 +513,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the selected icon for the button. * @param selectedIcon the icon used as the "selected" image * @see #getSelectedIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The selected icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The selected icon for the button.") public void setSelectedIcon(Icon selectedIcon) { Icon oldValue = this.selectedIcon; this.selectedIcon = selectedIcon; @@ -575,11 +557,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the rollover icon for the button. * @param rolloverIcon the icon used as the "rollover" image * @see #getRolloverIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The rollover icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The rollover icon for the button.") public void setRolloverIcon(Icon rolloverIcon) { Icon oldValue = this.rolloverIcon; this.rolloverIcon = rolloverIcon; @@ -612,11 +592,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param rolloverSelectedIcon the icon used as the * "selected rollover" image * @see #getRolloverSelectedIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The rollover selected icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The rollover selected icon for the button.") public void setRolloverSelectedIcon(Icon rolloverSelectedIcon) { Icon oldValue = this.rolloverSelectedIcon; this.rolloverSelectedIcon = rolloverSelectedIcon; @@ -664,11 +642,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the disabled icon for the button. * @param disabledIcon the icon used as the disabled image * @see #getDisabledIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The disabled icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The disabled icon for the button.") public void setDisabledIcon(Icon disabledIcon) { Icon oldValue = this.disabledIcon; this.disabledIcon = disabledIcon; @@ -717,11 +693,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param disabledSelectedIcon the icon used as the disabled * selection image * @see #getDisabledSelectedIcon - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The disabled selection icon for the button. */ + @BeanProperty(visualUpdate = true, description + = "The disabled selection icon for the button.") public void setDisabledSelectedIcon(Icon disabledSelectedIcon) { Icon oldValue = this.disabledSelectedIcon; this.disabledSelectedIcon = disabledSelectedIcon; @@ -768,14 +742,12 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @throws IllegalArgumentException if the alignment is not one of the legal * values listed above - * @beaninfo - * bound: true - * enum: TOP SwingConstants.TOP - * CENTER SwingConstants.CENTER - * BOTTOM SwingConstants.BOTTOM - * attribute: visualUpdate true - * description: The vertical alignment of the icon and text. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.TOP", + "SwingConstants.CENTER", + "SwingConstants.BOTTOM"}, description + = "The vertical alignment of the icon and text.") public void setVerticalAlignment(int alignment) { if (alignment == verticalAlignment) return; int oldValue = verticalAlignment; @@ -817,16 +789,14 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @throws IllegalArgumentException if the alignment is not one of the * valid values - * @beaninfo - * bound: true - * enum: LEFT SwingConstants.LEFT - * CENTER SwingConstants.CENTER - * RIGHT SwingConstants.RIGHT - * LEADING SwingConstants.LEADING - * TRAILING SwingConstants.TRAILING - * attribute: visualUpdate true - * description: The horizontal alignment of the icon and text. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.LEFT", + "SwingConstants.CENTER", + "SwingConstants.RIGHT", + "SwingConstants.LEADING", + "SwingConstants.TRAILING"}, description + = "The horizontal alignment of the icon and text.") public void setHorizontalAlignment(int alignment) { if (alignment == horizontalAlignment) return; int oldValue = horizontalAlignment; @@ -860,14 +830,12 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl *

  • {@code SwingConstants.TOP} *
  • {@code SwingConstants.BOTTOM} * - * @beaninfo - * bound: true - * enum: TOP SwingConstants.TOP - * CENTER SwingConstants.CENTER - * BOTTOM SwingConstants.BOTTOM - * attribute: visualUpdate true - * description: The vertical position of the text relative to the icon. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.TOP", + "SwingConstants.CENTER", + "SwingConstants.BOTTOM"}, description + = "The vertical position of the text relative to the icon.") public void setVerticalTextPosition(int textPosition) { if (textPosition == verticalTextPosition) return; int oldValue = verticalTextPosition; @@ -905,16 +873,14 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @exception IllegalArgumentException if textPosition * is not one of the legal values listed above - * @beaninfo - * bound: true - * enum: LEFT SwingConstants.LEFT - * CENTER SwingConstants.CENTER - * RIGHT SwingConstants.RIGHT - * LEADING SwingConstants.LEADING - * TRAILING SwingConstants.TRAILING - * attribute: visualUpdate true - * description: The horizontal position of the text relative to the icon. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.LEFT", + "SwingConstants.CENTER", + "SwingConstants.RIGHT", + "SwingConstants.LEADING", + "SwingConstants.TRAILING"}, description + = "The horizontal position of the text relative to the icon.") public void setHorizontalTextPosition(int textPosition) { if (textPosition == horizontalTextPosition) return; int oldValue = horizontalTextPosition; @@ -951,12 +917,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param iconTextGap the space between icon and text if these properties are set. * @since 1.4 * @see #getIconTextGap - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If both the icon and text properties are set, this - * property defines the space between them. */ + @BeanProperty(visualUpdate = true, description + = "If both the icon and text properties are set, this property defines the space between them.") public void setIconTextGap(int iconTextGap) { int oldValue = this.iconTextGap; this.iconTextGap = iconTextGap; @@ -1095,11 +1058,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @see #configurePropertiesFromAction * @see #createActionPropertyChangeListener * @see #actionPropertyChanged - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the Action instance connected with this ActionEvent source */ + @BeanProperty(visualUpdate = true, description + = "the Action instance connected with this ActionEvent source") public void setAction(Action a) { Action oldValue = getAction(); if (action==null || !action.equals(a)) { @@ -1393,11 +1354,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param b if true and border property is not null, * the border is painted * @see #isBorderPainted - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the border should be painted. */ + @BeanProperty(visualUpdate = true, description + = "Whether the border should be painted.") public void setBorderPainted(boolean b) { boolean oldValue = paintBorder; paintBorder = b; @@ -1443,11 +1402,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @param b if true, the focus state should be painted * @see #isFocusPainted - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether focus should be painted */ + @BeanProperty(visualUpdate = true, description + = "Whether focus should be painted") public void setFocusPainted(boolean b) { boolean oldValue = paintFocus; paintFocus = b; @@ -1486,12 +1443,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * the content area is not filled * @see #isContentAreaFilled * @see #setOpaque - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the button should paint the content area - * or leave it transparent. */ + @BeanProperty(visualUpdate = true, description + = "Whether the button should paint the content area or leave it transparent.") public void setContentAreaFilled(boolean b) { boolean oldValue = contentAreaFilled; contentAreaFilled = b; @@ -1522,11 +1476,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @param b if true, rollover effects should be painted * @see #isRolloverEnabled - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether rollover effects should be enabled. */ + @BeanProperty(visualUpdate = true, description + = "Whether rollover effects should be enabled.") public void setRolloverEnabled(boolean b) { boolean oldValue = rolloverEnabled; rolloverEnabled = b; @@ -1569,12 +1521,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @param mnemonic the key code which represents the mnemonic * @see java.awt.event.KeyEvent * @see #setDisplayedMnemonicIndex - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the keyboard character mnemonic */ + @BeanProperty(visualUpdate = true, description + = "the keyboard character mnemonic") public void setMnemonic(int mnemonic) { int oldValue = getMnemonic(); model.setMnemonic(mnemonic); @@ -1589,11 +1538,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @param mnemonic a char specifying the mnemonic value * @see #setMnemonic(int) - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the keyboard character mnemonic */ + @BeanProperty(visualUpdate = true, description + = "the keyboard character mnemonic") public void setMnemonic(char mnemonic) { int vk = (int) mnemonic; if(vk >= 'a' && vk <='z') @@ -1622,13 +1569,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @exception IllegalArgumentException will be thrown if index * is >= length of the text, or < -1 * @see #getDisplayedMnemonicIndex - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the index into the String to draw the keyboard character - * mnemonic at */ + @BeanProperty(visualUpdate = true, description + = "the index into the String to draw the keyboard character mnemonic at") public void setDisplayedMnemonicIndex(int index) throws IllegalArgumentException { int oldValue = mnemonicIndex; @@ -1743,10 +1686,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the model that this button represents. * @param newModel the new ButtonModel * @see #getModel - * @beaninfo - * bound: true - * description: Model that the Button uses. */ + @BeanProperty(description + = "Model that the Button uses.") public void setModel(ButtonModel newModel) { ButtonModel oldModel = getModel(); @@ -1804,12 +1746,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Sets the L&F object that renders this component. * @param ui the ButtonUI L&F object * @see #getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the LookAndFeel.") public void setUI(ButtonUI ui) { super.setUI(ui); // disabled icons are generated by the LF so they should be unset here @@ -1897,6 +1836,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ChangeListener[] getChangeListeners() { return listenerList.getListeners(ChangeListener.class); } @@ -1954,6 +1894,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ActionListener[] getActionListeners() { return listenerList.getListeners(ActionListener.class); } @@ -2122,11 +2063,10 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * * @param label a String containing the text * @deprecated - Replaced by setText(text) - * @beaninfo - * bound: true - * description: Replace by setText(text) */ @Deprecated + @BeanProperty(description + = "Replace by setText(text)") public void setLabel(String label) { setText(label); } @@ -2155,6 +2095,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ItemListener[] getItemListeners() { return listenerList.getListeners(ItemListener.class); } @@ -2166,7 +2107,8 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * @return an array containing 1 Object: the text of the button, * if the item is selected; otherwise null */ - public Object[] getSelectedObjects() { + @BeanProperty(bound = false) + public Object[] getSelectedObjects() { if (isSelected() == false) { return null; } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/Box.java b/jdk/src/java.desktop/share/classes/javax/swing/Box.java index 73588b3cda6..84d98ae7fed 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/Box.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/Box.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,15 +22,12 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - - package javax.swing; import java.awt.*; -import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.ConstructorProperties; -import java.util.Locale; -import java.io.Serializable; import javax.accessibility.*; /** @@ -77,6 +74,7 @@ import javax.accessibility.*; * @author Timothy Prinzing * @since 1.2 */ +@JavaBean(defaultProperty = "accessibleContext") @SuppressWarnings("serial") public class Box extends JComponent implements Accessible { @@ -413,6 +411,7 @@ public class Box extends JComponent implements Accessible { * @return an AccessibleBox that serves as the * AccessibleContext of this Box */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleBox(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/ImageIcon.java b/jdk/src/java.desktop/share/classes/javax/swing/ImageIcon.java index 8c913e17332..8a63fe74cab 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/ImageIcon.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/ImageIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -27,6 +27,7 @@ package javax.swing; import java.awt.*; import java.awt.image.*; import java.beans.ConstructorProperties; +import java.beans.BeanProperty; import java.beans.Transient; import java.net.URL; @@ -567,11 +568,10 @@ public class ImageIcon implements Icon, Serializable, Accessible { * * @return an AccessibleImageIcon that serves as the * AccessibleContext of this ImageIcon - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this ImageIcon. * @since 1.3 */ + @BeanProperty(expert = true, description + = "The AccessibleContext associated with this ImageIcon.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleImageIcon(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java b/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java index 6a00de486d2..2d9ce397bc5 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java @@ -33,6 +33,8 @@ import java.awt.Container; import java.awt.Graphics; import java.awt.HeadlessException; import java.awt.LayoutManager; +import java.beans.BeanProperty; +import java.beans.JavaBean; import javax.accessibility.Accessible; import javax.accessibility.AccessibleContext; @@ -87,14 +89,12 @@ import javax.accessibility.AccessibleContext; * Please see {@link java.beans.XMLEncoder}. * * @see javax.swing.RootPaneContainer - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getContentPane - * description: Swing's Applet subclass. * * @author Arnaud Weber * @since 1.2 */ +@JavaBean(defaultProperty = "JMenuBar", description = "Swing's Applet subclass.") +@SwingContainer(delegate = "getContentPane") @SuppressWarnings("serial") // Same-version serialization only public class JApplet extends Applet implements Accessible, RootPaneContainer, @@ -203,12 +203,9 @@ public class JApplet extends Applet implements Accessible, * @see #getTransferHandler * @see java.awt.Component#setDropTarget * @since 1.6 - * - * @beaninfo - * bound: true - * hidden: true - * description: Mechanism for transfer of data into the component */ + @BeanProperty(hidden = true, description + = "Mechanism for transfer of data into the component") public void setTransferHandler(TransferHandler newHandler) { TransferHandler oldHandler = transferHandler; transferHandler = newHandler; @@ -242,11 +239,9 @@ public class JApplet extends Applet implements Accessible, * @param menuBar the menubar being placed in the applet * * @see #getJMenuBar - * - * @beaninfo - * hidden: true - * description: The menubar for accessing pulldown menus from this applet. */ + @BeanProperty(bound = false, hidden = true, description + = "The menubar for accessing pulldown menus from this applet.") public void setJMenuBar(final JMenuBar menuBar) { getRootPane().setJMenuBar(menuBar); } @@ -291,10 +286,9 @@ public class JApplet extends Applet implements Accessible, * @see #setLayout * @see #isRootPaneCheckingEnabled * @see javax.swing.RootPaneContainer - * @beaninfo - * hidden: true - * description: Whether the add and setLayout methods are forwarded */ + @BeanProperty(hidden = true, description + = "Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled) { rootPaneCheckingEnabled = enabled; } @@ -377,6 +371,8 @@ public class JApplet extends Applet implements Accessible, * @see #setRootPane * @see RootPaneContainer#getRootPane */ + @BeanProperty(bound = false, hidden = true, description + = "the RootPane object for this applet.") public JRootPane getRootPane() { return rootPane; } @@ -387,10 +383,6 @@ public class JApplet extends Applet implements Accessible, * @param root the rootPane object for this applet * * @see #getRootPane - * - * @beaninfo - * hidden: true - * description: the RootPane object for this applet. */ protected void setRootPane(JRootPane root) { if(rootPane != null) { @@ -428,12 +420,9 @@ public class JApplet extends Applet implements Accessible, * exception) if the content pane parameter is null * @see #getContentPane * @see RootPaneContainer#setContentPane - * - * @beaninfo - * hidden: true - * description: The client area of the applet where child - * components are normally inserted. */ + @BeanProperty(bound = false, hidden = true, description + = "The client area of the applet where child components are normally inserted.") public void setContentPane(Container contentPane) { getRootPane().setContentPane(contentPane); } @@ -456,11 +445,9 @@ public class JApplet extends Applet implements Accessible, * * @see #getLayeredPane * @see RootPaneContainer#setLayeredPane - * - * @beaninfo - * hidden: true - * description: The pane which holds the various applet layers. */ + @BeanProperty(bound = false, hidden = true, description + = "The pane which holds the various applet layers.") public void setLayeredPane(JLayeredPane layeredPane) { getRootPane().setLayeredPane(layeredPane); } @@ -482,11 +469,9 @@ public class JApplet extends Applet implements Accessible, * * @see #getGlassPane * @see RootPaneContainer#setGlassPane - * - * @beaninfo - * hidden: true - * description: A transparent pane used for menu rendering. */ + @BeanProperty(bound = false, hidden = true, description + = "A transparent pane used for menu rendering.") public void setGlassPane(Component glassPane) { getRootPane().setGlassPane(glassPane); } @@ -496,6 +481,7 @@ public class JApplet extends Applet implements Accessible, * * @since 1.6 */ + @BeanProperty(bound = false) public Graphics getGraphics() { JComponent.getGraphicsInvoked(this); return super.getGraphics(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JButton.java b/jdk/src/java.desktop/share/classes/javax/swing/JButton.java index 937de3adad6..dc2dcbcea32 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JButton.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,21 +24,16 @@ */ package javax.swing; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.ConstructorProperties; -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; - import javax.swing.plaf.*; -import javax.swing.event.*; import javax.accessibility.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - /** * An implementation of a "push" button. *

    @@ -69,13 +64,11 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: An implementation of a \"push\" button. - * * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "An implementation of a \"push\" button.") +@SwingContainer(false) @SuppressWarnings("serial") public class JButton extends AbstractButton implements Accessible { @@ -156,10 +149,9 @@ public class JButton extends AbstractButton implements Accessible { * @return the string "ButtonUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class.") public String getUIClassID() { return uiClassID; } @@ -176,9 +168,9 @@ public class JButton extends AbstractButton implements Accessible { * @return the value of the defaultButton property * @see JRootPane#setDefaultButton * @see #isDefaultCapable - * @beaninfo - * description: Whether or not this button is the default button */ + @BeanProperty(bound = false, description + = "Whether or not this button is the default button") public boolean isDefaultButton() { JRootPane root = SwingUtilities.getRootPane(this); if (root != null) { @@ -211,11 +203,9 @@ public class JButton extends AbstractButton implements Accessible { * capable of being the default button on the * RootPane; otherwise false * @see #isDefaultCapable - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether or not this button can be the default button */ + @BeanProperty(visualUpdate = true, description + = "Whether or not this button can be the default button") public void setDefaultCapable(boolean defaultCapable) { boolean oldDefaultCapable = this.defaultCapable; this.defaultCapable = defaultCapable; @@ -283,10 +273,9 @@ public class JButton extends AbstractButton implements Accessible { * * @return an AccessibleJButton that serves as the * AccessibleContext of this JButton - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this Button. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this Button.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJButton(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JCheckBox.java b/jdk/src/java.desktop/share/classes/javax/swing/JCheckBox.java index 400b8efae78..c793112f98f 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JCheckBox.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JCheckBox.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,9 +24,8 @@ */ package javax.swing; -import java.awt.*; -import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.swing.plaf.*; import javax.accessibility.*; @@ -35,7 +34,6 @@ import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.IOException; - /** * An implementation of a check box -- an item that can be selected or * deselected, and which displays its state to the user. @@ -69,13 +67,11 @@ import java.io.IOException; * * @see JRadioButton * - * @beaninfo - * attribute: isContainer false - * description: A component which can be selected or deselected. - * * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(description = "A component which can be selected or deselected.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JCheckBox extends JToggleButton implements Accessible { @@ -195,12 +191,10 @@ public class JCheckBox extends JToggleButton implements Accessible { * @param b true requests that the border be painted flat; * false requests normal borders * @see #isBorderPaintedFlat - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the border is painted flat. * @since 1.3 */ + @BeanProperty(visualUpdate = true, description + = "Whether the border is painted flat.") public void setBorderPaintedFlat(boolean b) { boolean oldValue = flat; flat = b; @@ -239,10 +233,9 @@ public class JCheckBox extends JToggleButton implements Accessible { * @return the string "CheckBoxUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class") public String getUIClassID() { return uiClassID; } @@ -311,10 +304,9 @@ public class JCheckBox extends JToggleButton implements Accessible { * * @return an AccessibleJCheckBox that serves as the * AccessibleContext of this JCheckBox - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this CheckBox. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this CheckBox.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJCheckBox(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JCheckBoxMenuItem.java b/jdk/src/java.desktop/share/classes/javax/swing/JCheckBoxMenuItem.java index 4aaa4417caa..f37a6db0083 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JCheckBoxMenuItem.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JCheckBoxMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,20 +24,14 @@ */ package javax.swing; -import java.util.EventListener; - -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; -import javax.swing.plaf.*; import javax.accessibility.*; - /** * A menu item that can be selected or deselected. If selected, the menu * item typically appears with a checkmark next to it. If unselected or @@ -81,14 +75,12 @@ import javax.accessibility.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A menu item which can be selected or deselected. - * * @author Georges Saab * @author David Karlton * @since 1.2 */ +@JavaBean(description = "A menu item which can be selected or deselected.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, Accessible @@ -178,6 +170,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -200,10 +193,9 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, * * @param b a boolean value indicating the item's * selected-state, where true=selected - * @beaninfo - * description: The selection state of the check box menu item - * hidden: true */ + @BeanProperty(bound = false, hidden = true, description + = "The selection state of the check box menu item") public synchronized void setState(boolean b) { setSelected(b); } @@ -216,6 +208,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, * @return an array containing one Object -- the text of the menu item * -- if the item is selected; otherwise null */ + @BeanProperty(bound = false) public Object[] getSelectedObjects() { if (isSelected() == false) return null; @@ -274,6 +267,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, * @return an AccessibleJCheckBoxMenuItem that serves as the * AccessibleContext of this AccessibleJCheckBoxMenuItem */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJCheckBoxMenuItem(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JColorChooser.java b/jdk/src/java.desktop/share/classes/javax/swing/JColorChooser.java index d7300157e02..1e524c4dd66 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JColorChooser.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JColorChooser.java @@ -22,11 +22,12 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.*; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.*; import java.util.*; @@ -36,7 +37,6 @@ import javax.accessibility.*; import sun.swing.SwingUtilities2; - /** * JColorChooser provides a pane of controls designed to allow * a user to manipulate and select a color. @@ -73,17 +73,13 @@ import sun.swing.SwingUtilities2; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * - * @beaninfo - * attribute: isContainer false - * description: A component that supports selecting a Color. - * - * * @author James Gosling * @author Amy Fowler * @author Steve Wilson * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that supports selecting a Color.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JColorChooser extends JComponent implements Accessible { @@ -261,12 +257,9 @@ public class JColorChooser extends JComponent implements Accessible { * * @param ui the ColorChooserUI L&F object * @see UIDefaults#getUI - * - * @beaninfo - * bound: true - * hidden: true - * description: The UI object that implements the color chooser's LookAndFeel. */ + @BeanProperty(hidden = true, description + = "The UI object that implements the color chooser's LookAndFeel.") public void setUI(ColorChooserUI ui) { super.setUI(ui); } @@ -289,6 +282,7 @@ public class JColorChooser extends JComponent implements Accessible { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -308,12 +302,9 @@ public class JColorChooser extends JComponent implements Accessible { * The ColorSelectionModel will fire a ChangeEvent * @param color the color to be set in the color chooser * @see JComponent#addPropertyChangeListener - * - * @beaninfo - * bound: false - * hidden: false - * description: The current color the chooser is to display. */ + @BeanProperty(bound = false, description + = "The current color the chooser is to display.") public void setColor(Color color) { selectionModel.setSelectedColor(color); @@ -381,11 +372,9 @@ public class JColorChooser extends JComponent implements Accessible { * @see #getDragEnabled * @see #setTransferHandler * @see TransferHandler - * - * @beaninfo - * description: Determines whether automatic drag handling is enabled. - * bound: false */ + @BeanProperty(bound = false, description + = "Determines whether automatic drag handling is enabled.") public void setDragEnabled(boolean b) { if (b && GraphicsEnvironment.isHeadless()) { throw new HeadlessException(); @@ -411,12 +400,9 @@ public class JColorChooser extends JComponent implements Accessible { * * @param preview the JComponent which displays the current color * @see JComponent#addPropertyChangeListener - * - * @beaninfo - * bound: true - * hidden: true - * description: The UI component which displays the current color. */ + @BeanProperty(hidden = true, description + = "The UI component which displays the current color.") public void setPreviewPanel(JComponent preview) { if (previewPanel != preview) { @@ -496,12 +482,9 @@ public class JColorChooser extends JComponent implements Accessible { * * @param panels an array of AbstractColorChooserPanel * objects - * - * @beaninfo - * bound: true - * hidden: true - * description: An array of different chooser types. */ + @BeanProperty(hidden = true, description + = "An array of different chooser types.") public void setChooserPanels( AbstractColorChooserPanel[] panels) { AbstractColorChooserPanel[] oldValue = chooserPanels; chooserPanels = panels; @@ -531,12 +514,9 @@ public class JColorChooser extends JComponent implements Accessible { * Sets the model containing the selected color. * * @param newModel the new ColorSelectionModel object - * - * @beaninfo - * bound: true - * hidden: true - * description: The model which contains the currently selected color. */ + @BeanProperty(hidden = true, description + = "The model which contains the currently selected color.") public void setSelectionModel(ColorSelectionModel newModel ) { ColorSelectionModel oldModel = selectionModel; selectionModel = newModel; @@ -603,6 +583,7 @@ public class JColorChooser extends JComponent implements Accessible { * @return an AccessibleJColorChooser that serves as the * AccessibleContext of this JColorChooser */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJColorChooser(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JComboBox.java b/jdk/src/java.desktop/share/classes/javax/swing/JComboBox.java index b8aff5ab832..17d9e64d91f 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JComboBox.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JComboBox.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,6 +24,8 @@ */ package javax.swing; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.Transient; @@ -71,14 +73,12 @@ import javax.accessibility.*; * * @param the type of the elements of this combo box * - * @beaninfo - * attribute: isContainer false - * description: A combination of a text field and a drop-down list. - * * @author Arnaud Weber * @author Mark Davidson * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A combination of a text field and a drop-down list.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JComboBox extends JComponent implements ItemSelectable,ListDataListener,ActionListener, Accessible { @@ -255,13 +255,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param ui the ComboBoxUI L&F object * @see UIDefaults#getUI - * - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(ComboBoxUI ui) { super.setUI(ui); } @@ -288,6 +284,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -308,11 +305,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param aModel the ComboBoxModel that provides the * displayed list of items - * - * @beaninfo - * bound: true - * description: Model that the combo box uses to get data to display. */ + @BeanProperty(description + = "Model that the combo box uses to get data to display.") public void setModel(ComboBoxModel aModel) { ComboBoxModel oldModel = dataModel; if (oldModel != null) { @@ -363,12 +358,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * This method fires a property changed event. * * @param aFlag if true, lightweight popups are desired - * - * @beaninfo - * bound: true - * expert: true - * description: Set to false to require heavyweight popups. */ + @BeanProperty(expert = true, description + = "Set to false to require heavyweight popups.") public void setLightWeightPopupEnabled(boolean aFlag) { boolean oldFlag = lightWeightPopupEnabled; lightWeightPopupEnabled = aFlag; @@ -398,12 +390,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param aFlag a boolean value, where true indicates that the * field is editable - * - * @beaninfo - * bound: true - * preferred: true - * description: If true, the user can type a new value in the combo box. */ + @BeanProperty(preferred = true, description + = "If true, the user can type a new value in the combo box.") public void setEditable(boolean aFlag) { boolean oldFlag = isEditable; isEditable = aFlag; @@ -427,11 +416,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param count an integer specifying the maximum number of items to * display in the list before using a scrollbar - * @beaninfo - * bound: true - * preferred: true - * description: The maximum number of rows the popup should have */ + @BeanProperty(preferred = true, description + = "The maximum number of rows the popup should have") public void setMaximumRowCount(int count) { int oldCount = maximumRowCount; maximumRowCount = count; @@ -465,11 +452,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @param aRenderer the ListCellRenderer that * displays the selected item * @see #setEditor - * @beaninfo - * bound: true - * expert: true - * description: The renderer that paints the item selected in the list. */ + @BeanProperty(expert = true, description + = "The renderer that paints the item selected in the list.") public void setRenderer(ListCellRenderer aRenderer) { ListCellRenderer oldRenderer = renderer; renderer = aRenderer; @@ -497,11 +482,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @param anEditor the ComboBoxEditor that * displays the selected item * @see #setRenderer - * @beaninfo - * bound: true - * expert: true - * description: The editor that combo box uses to edit the current value */ + @BeanProperty(expert = true, description + = "The editor that combo box uses to edit the current value") public void setEditor(ComboBoxEditor anEditor) { ComboBoxEditor oldEditor = editor; @@ -553,10 +536,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param anObject the list object to select; use null to clear the selection - * @beaninfo - * preferred: true - * description: Sets the selected item in the JComboBox. */ + @BeanProperty(bound = false, preferred = true, description + = "Sets the selected item in the JComboBox.") public void setSelectedItem(Object anObject) { Object oldSelection = selectedItemReminder; Object objectToSelect = anObject; @@ -618,10 +600,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * where 0 specifies the first item in the list and -1 indicates no selection * @exception IllegalArgumentException if anIndex < -1 or * anIndex is greater than or equal to size - * @beaninfo - * preferred: true - * description: The item at index is selected. */ + @BeanProperty(bound = false, preferred = true, description + = "The item at index is selected.") public void setSelectedIndex(int anIndex) { int size = dataModel.getSize(); @@ -689,11 +670,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @param prototypeDisplayValue the prototype display value * @see #getPrototypeDisplayValue * @since 1.4 - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The display prototype value, used to compute display width and height. */ + @BeanProperty(visualUpdate = true, description + = "The display prototype value, used to compute display width and height.") public void setPrototypeDisplayValue(E prototypeDisplayValue) { Object oldValue = this.prototypeDisplayValue; this.prototypeDisplayValue = prototypeDisplayValue; @@ -869,6 +848,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ItemListener[] getItemListeners() { return listenerList.getListeners(ItemListener.class); } @@ -907,6 +887,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ActionListener[] getActionListeners() { return listenerList.getListeners(ActionListener.class); } @@ -946,6 +927,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public PopupMenuListener[] getPopupMenuListeners() { return listenerList.getListeners(PopupMenuListener.class); } @@ -1074,11 +1056,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @see #configurePropertiesFromAction * @see #createActionPropertyChangeListener * @see #actionPropertyChanged - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the Action instance connected with this ActionEvent source */ + @BeanProperty(visualUpdate = true, description + = "the Action instance connected with this ActionEvent source") public void setAction(Action a) { Action oldValue = getAction(); if (action==null || !action.equals(a)) { @@ -1305,6 +1285,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @return an array of Objects containing one * element -- the selected item */ + @BeanProperty(bound = false) public Object[] getSelectedObjects() { Object selectedObject = getSelectedItem(); if ( selectedObject == null ) @@ -1394,11 +1375,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @param b a boolean value, where true enables the component and * false disables it - * @beaninfo - * bound: true - * preferred: true - * description: Whether the combo box is enabled. */ + @BeanProperty(preferred = true, description + = "The enabled state of the component.") public void setEnabled(boolean b) { super.setEnabled(b); firePropertyChange( "enabled", !isEnabled(), isEnabled() ); @@ -1458,10 +1437,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * character becomes the selected item. * * @param aManager a key selection manager - * @beaninfo - * expert: true - * description: The objects that changes the selection when a key is pressed. */ + @BeanProperty(bound = false, expert = true, description + = "The objects that changes the selection when a key is pressed.") public void setKeySelectionManager(KeySelectionManager aManager) { keySelectionManager = aManager; } @@ -1481,6 +1459,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @return an integer equal to the number of items in the list */ + @BeanProperty(bound = false) public int getItemCount() { return dataModel.getSize(); } @@ -1629,6 +1608,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * @return an AccessibleJComboBox that serves as the * AccessibleContext of this JComboBox */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if ( accessibleContext == null ) { accessibleContext = new AccessibleJComboBox(); @@ -2131,11 +2111,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @see #getAccessibleName * @see #addPropertyChangeListener - * - * @beaninfo - * preferred: true - * description: Sets the accessible name for the component. */ + @BeanProperty(preferred = true, description + = "Sets the accessible name for the component.") public void setAccessibleName(String s) { ac.setAccessibleName(s); } @@ -2165,11 +2143,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * * @see #setAccessibleName * @see #addPropertyChangeListener - * - * @beaninfo - * preferred: true - * description: Sets the accessible description for the component. */ + @BeanProperty(preferred = true, description + = "Sets the accessible description for the component.") public void setAccessibleDescription(String s) { ac.setAccessibleDescription(s); } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java b/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java index 7c85698cc9f..3276d534a48 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java @@ -25,6 +25,7 @@ package javax.swing; +import java.beans.*; import java.util.HashSet; import java.util.Hashtable; import java.util.Enumeration; @@ -36,10 +37,6 @@ import java.util.Set; import java.awt.*; import java.awt.event.*; import java.awt.peer.LightweightPeer; -import java.beans.PropertyChangeListener; -import java.beans.VetoableChangeListener; -import java.beans.VetoableChangeSupport; -import java.beans.Transient; import java.applet.Applet; @@ -176,6 +173,7 @@ import sun.swing.UIClientPropertyKey; * @author Arnaud Weber * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID") @SuppressWarnings("serial") // Same-version serialization only public abstract class JComponent extends Container implements Serializable, TransferHandler.HasGetTransferHandler @@ -479,11 +477,10 @@ public abstract class JComponent extends Container implements Serializable, * * @param value whether or not the JPopupMenu is inherited * @see #setComponentPopupMenu - * @beaninfo - * bound: true - * description: Whether or not the JPopupMenu is inherited * @since 1.5 */ + @BeanProperty(description + = "Whether or not the JPopupMenu is inherited") public void setInheritsPopupMenu(boolean value) { boolean oldValue = getFlag(INHERITS_POPUP_MENU); setFlag(INHERITS_POPUP_MENU, value); @@ -519,12 +516,10 @@ public abstract class JComponent extends Container implements Serializable, * @param popup - the popup that will be assigned to this component * may be null * @see #getComponentPopupMenu - * @beaninfo - * bound: true - * preferred: true - * description: Popup to show * @since 1.5 */ + @BeanProperty(preferred = true, description + = "Popup to show") public void setComponentPopupMenu(JPopupMenu popup) { if(popup != null) { enableEvents(AWTEvent.MOUSE_EVENT_MASK); @@ -649,12 +644,9 @@ public abstract class JComponent extends Container implements Serializable, * @see #updateUI * @see UIManager#getLookAndFeel * @see UIManager#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The component's look and feel delegate. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The component's look and feel delegate.") protected void setUI(ComponentUI newUI) { /* We do not check that the UI instance is different * before allowing the switch in order to enable the @@ -718,10 +710,9 @@ public abstract class JComponent extends Container implements Serializable, * @return the UIDefaults key for a * ComponentUI subclass * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: UIClassID */ + @BeanProperty(bound = false, expert = true, description + = "UIClassID") public String getUIClassID() { return uiClassID; } @@ -1265,6 +1256,7 @@ public abstract class JComponent extends Container implements Serializable, * @return true if the component is currently painting a tile, * false otherwise */ + @BeanProperty(bound = false) public boolean isPaintingTile() { return getFlag(IS_PAINTING_TILE); } @@ -1295,6 +1287,7 @@ public abstract class JComponent extends Container implements Serializable, * @see #print * @since 1.6 */ + @BeanProperty(bound = false) public final boolean isPaintingForPrint() { return getFlag(IS_PRINTING); } @@ -1319,6 +1312,7 @@ public abstract class JComponent extends Container implements Serializable, * Container.setFocusCycleRoot(boolean). */ @Deprecated + @BeanProperty(bound = false) public boolean isManagingFocus() { return false; } @@ -1589,11 +1583,9 @@ public abstract class JComponent extends Container implements Serializable, * @see #getVerifyInputWhenFocusTarget * * @since 1.3 - * @beaninfo - * bound: true - * description: Whether the Component verifies input before accepting - * focus. */ + @BeanProperty(description + = "Whether the Component verifies input before accepting focus.") public void setVerifyInputWhenFocusTarget(boolean verifyInputWhenFocusTarget) { boolean oldVerifyInputWhenFocusTarget = @@ -1641,11 +1633,9 @@ public abstract class JComponent extends Container implements Serializable, * Sets the preferred size of this component. * If preferredSize is null, the UI will * be asked for the preferred size. - * @beaninfo - * preferred: true - * bound: true - * description: The preferred size of the component. */ + @BeanProperty(preferred = true, description + = "The preferred size of the component.") public void setPreferredSize(Dimension preferredSize) { super.setPreferredSize(preferredSize); } @@ -1685,10 +1675,9 @@ public abstract class JComponent extends Container implements Serializable, * @param maximumSize a Dimension containing the * desired maximum allowable size * @see #getMaximumSize - * @beaninfo - * bound: true - * description: The maximum size of the component. */ + @BeanProperty(description + = "The maximum size of the component.") public void setMaximumSize(Dimension maximumSize) { super.setMaximumSize(maximumSize); } @@ -1726,10 +1715,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param minimumSize the new minimum size of this component * @see #getMinimumSize - * @beaninfo - * bound: true - * description: The minimum size of the component. */ + @BeanProperty(description + = "The minimum size of the component.") public void setMinimumSize(Dimension minimumSize) { super.setMinimumSize(minimumSize); } @@ -1793,12 +1781,9 @@ public abstract class JComponent extends Container implements Serializable, * @param border the border to be rendered for this component * @see Border * @see CompoundBorder - * @beaninfo - * bound: true - * preferred: true - * attribute: visualUpdate true - * description: The component's border. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The component's border.") public void setBorder(Border border) { Border oldBorder = this.border; @@ -1831,6 +1816,7 @@ public abstract class JComponent extends Container implements Serializable, * @return the value of the insets property * @see #setBorder */ + @BeanProperty(expert = true) public Insets getInsets() { if (border != null) { return border.getBorderInsets(this); @@ -1849,8 +1835,6 @@ public abstract class JComponent extends Container implements Serializable, * @param insets the Insets object, which can be reused * @return the Insets object * @see #getInsets - * @beaninfo - * expert: true */ public Insets getInsets(Insets insets) { if (insets == null) { @@ -1892,9 +1876,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param alignmentY the new vertical alignment * @see #getAlignmentY - * @beaninfo - * description: The preferred vertical alignment of the component. */ + @BeanProperty(description + = "The preferred vertical alignment of the component.") public void setAlignmentY(float alignmentY) { this.alignmentY = validateAlignment(alignmentY); isAlignmentYSet = true; @@ -1921,9 +1905,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param alignmentX the new horizontal alignment * @see #getAlignmentX - * @beaninfo - * description: The preferred horizontal alignment of the component. */ + @BeanProperty(description + = "The preferred horizontal alignment of the component.") public void setAlignmentX(float alignmentX) { this.alignmentX = validateAlignment(alignmentX); isAlignmentXSet = true; @@ -1939,10 +1923,9 @@ public abstract class JComponent extends Container implements Serializable, * @param inputVerifier the new input verifier * @since 1.3 * @see InputVerifier - * @beaninfo - * bound: true - * description: The component's input verifier. */ + @BeanProperty(description + = "The component's input verifier.") public void setInputVerifier(InputVerifier inputVerifier) { InputVerifier oldInputVerifier = (InputVerifier)getClientProperty( JComponent_INPUT_VERIFIER); @@ -1967,6 +1950,7 @@ public abstract class JComponent extends Container implements Serializable, * then invoke operations on that object to draw on the component. * @return this components graphics context */ + @BeanProperty(bound = false) public Graphics getGraphics() { if (DEBUG_GRAPHICS_LOADED && shouldDebugGraphics() != 0) { DebugGraphics graphics = new DebugGraphics(super.getGraphics(), @@ -1993,15 +1977,13 @@ public abstract class JComponent extends Container implements Serializable, *

  • A value of 0 causes no changes to the debugging options. * * debugOptions is bitwise OR'd into the current value - * - * @beaninfo - * preferred: true - * enum: NONE_OPTION DebugGraphics.NONE_OPTION - * LOG_OPTION DebugGraphics.LOG_OPTION - * FLASH_OPTION DebugGraphics.FLASH_OPTION - * BUFFERED_OPTION DebugGraphics.BUFFERED_OPTION - * description: Diagnostic options for graphics operations. */ + @BeanProperty(bound = false, preferred = true, enumerationValues = { + "DebugGraphics.NONE_OPTION", + "DebugGraphics.LOG_OPTION", + "DebugGraphics.FLASH_OPTION", + "DebugGraphics.BUFFERED_OPTION"}, description + = "Diagnostic options for graphics operations.") public void setDebugGraphicsOptions(int debugOptions) { DebugGraphics.setDebugOptions(this, debugOptions); } @@ -2278,6 +2260,7 @@ public abstract class JComponent extends Container implements Serializable, * @return an array of KeyStroke objects * @see #registerKeyboardAction */ + @BeanProperty(bound = false) public KeyStroke[] getRegisteredKeyStrokes() { int[] counts = new int[3]; KeyStroke[][] strokes = new KeyStroke[3][]; @@ -2616,6 +2599,7 @@ public abstract class JComponent extends Container implements Serializable, * @see #getBaseline(int, int) * @since 1.6 */ + @BeanProperty(bound = false) public BaselineResizeBehavior getBaselineResizeBehavior() { if (ui != null) { return ui.getBaselineResizeBehavior(this); @@ -2666,10 +2650,8 @@ public abstract class JComponent extends Container implements Serializable, * * @param aFlag true to make the component visible; false to * make it invisible - * - * @beaninfo - * attribute: visualUpdate true */ + @BeanProperty(hidden = true, visualUpdate = true) public void setVisible(boolean aFlag) { if (aFlag != isVisible()) { super.setVisible(aFlag); @@ -2699,13 +2681,9 @@ public abstract class JComponent extends Container implements Serializable, * @param enabled true if this component should be enabled, false otherwise * @see java.awt.Component#isEnabled * @see java.awt.Component#isLightweight - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The enabled state of the component. */ + @BeanProperty(expert = true, preferred = true, visualUpdate = true, description + = "The enabled state of the component.") public void setEnabled(boolean enabled) { boolean oldEnabled = isEnabled(); super.setEnabled(enabled); @@ -2722,13 +2700,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param fg the desired foreground Color * @see java.awt.Component#getForeground - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The foreground color of the component. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The foreground color of the component.") public void setForeground(Color fg) { Color oldFg = getForeground(); super.setForeground(fg); @@ -2752,13 +2726,9 @@ public abstract class JComponent extends Container implements Serializable, * @param bg the desired background Color * @see java.awt.Component#getBackground * @see #setOpaque - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The background color of the component. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The background color of the component.") public void setBackground(Color bg) { Color oldBg = getBackground(); super.setBackground(bg); @@ -2773,13 +2743,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param font the desired Font for this component * @see java.awt.Component#getFont - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The font for the component. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The font for the component.") public void setFont(Font font) { Font oldFont = getFont(); super.setFont(font); @@ -3028,10 +2994,9 @@ public abstract class JComponent extends Container implements Serializable, * @param text the string to display; if the text is null, * the tool tip is turned off for this component * @see #TOOL_TIP_TEXT_KEY - * @beaninfo - * preferred: true - * description: The text to display in a tool tip. */ + @BeanProperty(bound = false, preferred = true, description + = "The text to display in a tool tip.") public void setToolTipText(String text) { String oldText = getToolTipText(); putClientProperty(TOOL_TIP_TEXT_KEY, text); @@ -3190,11 +3155,9 @@ public abstract class JComponent extends Container implements Serializable, * @see #getAutoscrolls * @see JViewport * @see JScrollPane - * - * @beaninfo - * expert: true - * description: Determines if this component automatically scrolls its contents when dragged. */ + @BeanProperty(bound = false, expert = true, description + = "Determines if this component automatically scrolls its contents when dragged.") public void setAutoscrolls(boolean autoscrolls) { setFlag(AUTOSCROLLS_SET, true); if (this.autoscrolls != autoscrolls) { @@ -3254,11 +3217,9 @@ public abstract class JComponent extends Container implements Serializable, * @see TransferHandler * @see #getTransferHandler * @since 1.4 - * @beaninfo - * bound: true - * hidden: true - * description: Mechanism for transfer of data to and from the component */ + @BeanProperty(hidden = true, description + = "Mechanism for transfer of data to and from the component") public void setTransferHandler(TransferHandler newHandler) { TransferHandler oldHandler = (TransferHandler)getClientProperty( JComponent_TRANSFER_HANDLER); @@ -4208,8 +4169,6 @@ public abstract class JComponent extends Container implements Serializable, * or if any keystroke already maps to another focus traversal * operation for this Component * @since 1.5 - * @beaninfo - * bound: true */ public void setFocusTraversalKeys(int id, Set keystrokes) @@ -4336,6 +4295,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return the current x coordinate of the component's origin */ + @BeanProperty(bound = false) public int getX() { return super.getX(); } @@ -4348,6 +4308,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return the current y coordinate of the component's origin */ + @BeanProperty(bound = false) public int getY() { return super.getY(); } @@ -4360,6 +4321,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return the current width of this component */ + @BeanProperty(bound = false) public int getWidth() { return super.getWidth(); } @@ -4372,6 +4334,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return the current height of this component */ + @BeanProperty(bound = false) public int getHeight() { return super.getHeight(); } /** @@ -4405,11 +4368,9 @@ public abstract class JComponent extends Container implements Serializable, * * @param isOpaque true if this component should be opaque * @see #isOpaque - * @beaninfo - * bound: true - * expert: true - * description: The component's opacity */ + @BeanProperty(expert = true, description + = "The component's opacity") public void setOpaque(boolean isOpaque) { boolean oldValue = getFlag(IS_OPAQUE); setFlag(IS_OPAQUE, isOpaque); @@ -4520,6 +4481,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return the visible rectangle */ + @BeanProperty(bound = false) public Rectangle getVisibleRect() { Rectangle visibleRect = new Rectangle(); @@ -4628,6 +4590,7 @@ public abstract class JComponent extends Container implements Serializable, * * @since 1.4 */ + @BeanProperty(bound = false) public synchronized VetoableChangeListener[] getVetoableChangeListeners() { if (vetoableChangeSupport == null) { return new VetoableChangeListener[0]; @@ -4645,6 +4608,7 @@ public abstract class JComponent extends Container implements Serializable, * @return the top-level Container that this component is in, * or null if not in any container */ + @BeanProperty(bound = false) public Container getTopLevelAncestor() { for(Container p = this; p != null; p = p.getParent()) { if(p instanceof Window || p instanceof Applet) { @@ -4711,6 +4675,7 @@ public abstract class JComponent extends Container implements Serializable, * * @since 1.4 */ + @BeanProperty(bound = false) public AncestorListener[] getAncestorListeners() { AncestorNotifier ancestorNotifier = getAncestorNotifier(); if (ancestorNotifier == null) { @@ -4943,6 +4908,7 @@ public abstract class JComponent extends Container implements Serializable, * * @return always returns true */ + @BeanProperty(bound = false) public boolean isOptimizedDrawingEnabled() { return true; } @@ -5392,6 +5358,7 @@ public abstract class JComponent extends Container implements Serializable, * @return the JRootPane that contains this component, * or null if no JRootPane is found */ + @BeanProperty(bound = false) public JRootPane getRootPane() { return SwingUtilities.getRootPane(this); } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JDesktopPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JDesktopPane.java index 047070460bc..99a2fe8ab6a 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JDesktopPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JDesktopPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.util.List; @@ -34,16 +33,15 @@ import javax.accessibility.*; import java.awt.Component; import java.awt.Container; -import java.awt.DefaultFocusTraversalPolicy; -import java.awt.FocusTraversalPolicy; -import java.awt.Window; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import java.beans.PropertyVetoException; import java.util.Set; import java.util.TreeSet; import java.util.LinkedHashSet; + /** * A container used to create a multiple-document interface or a virtual desktop. * You create JInternalFrame objects and add them to the @@ -88,6 +86,7 @@ import java.util.LinkedHashSet; * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "UI") @SuppressWarnings("serial") // Same-version serialization only public class JDesktopPane extends JLayeredPane implements Accessible { @@ -163,12 +162,9 @@ public class JDesktopPane extends JLayeredPane implements Accessible * * @param ui the DesktopPaneUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(DesktopPaneUI ui) { super.setUI(ui); } @@ -183,13 +179,12 @@ public class JDesktopPane extends JLayeredPane implements Accessible * @see #LIVE_DRAG_MODE * @see #OUTLINE_DRAG_MODE * - * @beaninfo - * bound: true - * description: Dragging style for internal frame children. - * enum: LIVE_DRAG_MODE JDesktopPane.LIVE_DRAG_MODE - * OUTLINE_DRAG_MODE JDesktopPane.OUTLINE_DRAG_MODE * @since 1.3 */ + @BeanProperty(enumerationValues = { + "JDesktopPane.LIVE_DRAG_MODE", + "JDesktopPane.OUTLINE_DRAG_MODE"}, description + = "Dragging style for internal frame children.") public void setDragMode(int dragMode) { int oldDragMode = this.dragMode; this.dragMode = dragMode; @@ -225,12 +220,9 @@ public class JDesktopPane extends JLayeredPane implements Accessible * {@code LookAndFeel}. * * @param d the DesktopManager to use - * - * @beaninfo - * bound: true - * description: Desktop manager to handle the internal frames in the - * desktop pane. */ + @BeanProperty(description + = "Desktop manager to handle the internal frames in the desktop pane.") public void setDesktopManager(DesktopManager d) { DesktopManager oldValue = desktopManager; desktopManager = d; @@ -256,6 +248,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -266,6 +259,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible * * @return an array of JInternalFrame objects */ + @BeanProperty(bound = false) public JInternalFrame[] getAllFrames() { return getAllFrames(this).toArray(new JInternalFrame[0]); } @@ -600,6 +594,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible * @return an AccessibleJDesktopPane that serves as the * AccessibleContext of this JDesktopPane */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJDesktopPane(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java b/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java index b33bb15f30d..29ad6f88fbb 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java @@ -26,6 +26,8 @@ package javax.swing; import java.awt.*; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.accessibility.*; /** @@ -86,16 +88,13 @@ import javax.accessibility.*; * @see JRootPane * @see javax.swing.RootPaneContainer * - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getContentPane - * description: A toplevel window for creating dialog boxes. - * * @author David Kloba * @author James Gosling * @author Scott Violet * @since 1.2 */ +@JavaBean(defaultProperty = "JMenuBar", description = "A toplevel window for creating dialog boxes.") +@SwingContainer(delegate = "getContentPane") @SuppressWarnings("serial") // Same-version serialization only public class JDialog extends Dialog implements WindowConstants, Accessible, @@ -743,15 +742,12 @@ public class JDialog extends Dialog implements WindowConstants, * @see #addWindowListener * @see #getDefaultCloseOperation * @see WindowConstants - * - * @beaninfo - * preferred: true - * bound: true - * enum: DO_NOTHING_ON_CLOSE WindowConstants.DO_NOTHING_ON_CLOSE - * HIDE_ON_CLOSE WindowConstants.HIDE_ON_CLOSE - * DISPOSE_ON_CLOSE WindowConstants.DISPOSE_ON_CLOSE - * description: The dialog's default close operation. */ + @BeanProperty(preferred = true, enumerationValues = { + "WindowConstants.DO_NOTHING_ON_CLOSE", + "WindowConstants.HIDE_ON_CLOSE", + "WindowConstants.DISPOSE_ON_CLOSE"}, description + = "The dialog's default close operation.") public void setDefaultCloseOperation(int operation) { if (operation != DO_NOTHING_ON_CLOSE && operation != HIDE_ON_CLOSE && @@ -802,12 +798,9 @@ public class JDialog extends Dialog implements WindowConstants, * @see #getTransferHandler * @see java.awt.Component#setDropTarget * @since 1.6 - * - * @beaninfo - * bound: true - * hidden: true - * description: Mechanism for transfer of data into the component */ + @BeanProperty(hidden = true, description + = "Mechanism for transfer of data into the component") public void setTransferHandler(TransferHandler newHandler) { TransferHandler oldHandler = transferHandler; transferHandler = newHandler; @@ -844,11 +837,9 @@ public class JDialog extends Dialog implements WindowConstants, * @param menu the menubar being placed in the dialog * * @see #getJMenuBar - * - * @beaninfo - * hidden: true - * description: The menubar for accessing pulldown menus from this dialog. */ + @BeanProperty(bound = false, hidden = true, description + = "The menubar for accessing pulldown menus from this dialog.") public void setJMenuBar(final JMenuBar menu) { getRootPane().setJMenuBar(menu); } @@ -892,10 +883,9 @@ public class JDialog extends Dialog implements WindowConstants, * @see #setLayout * @see #isRootPaneCheckingEnabled * @see javax.swing.RootPaneContainer - * @beaninfo - * hidden: true - * description: Whether the add and setLayout methods are forwarded */ + @BeanProperty(hidden = true, description + = "Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled) { rootPaneCheckingEnabled = enabled; } @@ -977,6 +967,8 @@ public class JDialog extends Dialog implements WindowConstants, * @see #setRootPane * @see RootPaneContainer#getRootPane */ + @BeanProperty(bound = false, hidden = true, description + = "the RootPane object for this dialog.") public JRootPane getRootPane() { return rootPane; } @@ -989,10 +981,6 @@ public class JDialog extends Dialog implements WindowConstants, * @param root the {@code rootPane} object for this dialog * * @see #getRootPane - * - * @beaninfo - * hidden: true - * description: the RootPane object for this dialog. */ protected void setRootPane(JRootPane root) { if(rootPane != null) { @@ -1041,12 +1029,9 @@ public class JDialog extends Dialog implements WindowConstants, * exception) if the content pane parameter is {@code null} * @see #getContentPane * @see RootPaneContainer#setContentPane - * - * @beaninfo - * hidden: true - * description: The client area of the dialog where child - * components are normally inserted. */ + @BeanProperty(bound = false, hidden = true, description + = "The client area of the dialog where child components are normally inserted.") public void setContentPane(Container contentPane) { getRootPane().setContentPane(contentPane); } @@ -1073,11 +1058,9 @@ public class JDialog extends Dialog implements WindowConstants, * exception) if the layered pane parameter is null * @see #getLayeredPane * @see RootPaneContainer#setLayeredPane - * - * @beaninfo - * hidden: true - * description: The pane which holds the various dialog layers. */ + @BeanProperty(bound = false, hidden = true, description + = "The pane which holds the various dialog layers.") public void setLayeredPane(JLayeredPane layeredPane) { getRootPane().setLayeredPane(layeredPane); } @@ -1101,11 +1084,9 @@ public class JDialog extends Dialog implements WindowConstants, * @param glassPane the {@code glassPane} object for this dialog * @see #getGlassPane * @see RootPaneContainer#setGlassPane - * - * @beaninfo - * hidden: true - * description: A transparent pane used for menu rendering. */ + @BeanProperty(bound = false, hidden = true, description + = "A transparent pane used for menu rendering.") public void setGlassPane(Component glassPane) { getRootPane().setGlassPane(glassPane); } @@ -1115,6 +1096,7 @@ public class JDialog extends Dialog implements WindowConstants, * * @since 1.6 */ + @BeanProperty(bound = false) public Graphics getGraphics() { JComponent.getGraphicsInvoked(this); return super.getGraphics(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java index cfcd56585be..3211d572c1c 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java @@ -24,15 +24,13 @@ */ package javax.swing; -import sun.swing.SwingUtilities2; - import java.awt.*; -import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.lang.reflect.*; import java.net.*; import java.util.*; import java.io.*; -import java.util.*; import javax.swing.plaf.*; import javax.swing.text.*; @@ -184,13 +182,11 @@ import sun.reflect.misc.ReflectUtil; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A text component to edit various types of content. - * * @author Timothy Prinzing * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "A text component to edit various types of content.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JEditorPane extends JTextComponent { @@ -323,6 +319,7 @@ public class JEditorPane extends JTextComponent { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public synchronized HyperlinkListener[] getHyperlinkListeners() { return listenerList.getListeners(javax.swing.event.HyperlinkListener.class); } @@ -411,11 +408,9 @@ public class JEditorPane extends JTextComponent { * @exception IOException for a null or invalid * page specification, or exception from the stream being read * @see #getPage - * @beaninfo - * description: the URL used to set content - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the URL used to set content") public void setPage(URL page) throws IOException { if (page == null) { throw new IOException("invalid url"); @@ -895,6 +890,7 @@ public class JEditorPane extends JTextComponent { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -960,11 +956,11 @@ public class JEditorPane extends JTextComponent { * @param type the non-null mime type for the content editing * support * @see #getContentType - * @beaninfo - * description: the type of content * @throws NullPointerException if the type parameter * is null */ + @BeanProperty(bound = false, description + = "the type of content") public final void setContentType(String type) { // The type could have optional info is part of it, // for example some charset info. We need to strip that @@ -1046,11 +1042,9 @@ public class JEditorPane extends JTextComponent { * * @param kit the desired editor behavior * @see #getEditorKit - * @beaninfo - * description: the currently installed kit for handling content - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the currently installed kit for handling content") public void setEditorKit(EditorKit kit) { EditorKit old = this.kit; isUserSetEditorKit = true; @@ -1414,9 +1408,9 @@ public class JEditorPane extends JTextComponent { * @param t the new text to be set; if null the old * text will be deleted * @see #getText - * @beaninfo - * description: the text of this component */ + @BeanProperty(bound = false, description + = "the text of this component") public void setText(String t) { try { Document doc = getDocument(); @@ -1466,6 +1460,7 @@ public class JEditorPane extends JTextComponent { * @return true if a viewport should force the Scrollables width to * match its own, false otherwise */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -1489,6 +1484,7 @@ public class JEditorPane extends JTextComponent { * Scrollable's height to match its own, * false otherwise */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportHeight() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -1626,6 +1622,7 @@ public class JEditorPane extends JTextComponent { * @return an AccessibleJEditorPane that serves as the * AccessibleContext of this JEditorPane */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (getEditorKit() instanceof HTMLEditorKit) { if (accessibleContext == null || accessibleContext.getClass() != diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JFileChooser.java b/jdk/src/java.desktop/share/classes/javax/swing/JFileChooser.java index 45a5a907f24..01edf5d0486 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JFileChooser.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JFileChooser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import javax.swing.event.*; @@ -48,6 +47,8 @@ import java.awt.HeadlessException; import java.awt.EventQueue; import java.awt.Toolkit; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import java.io.InvalidObjectException; @@ -83,13 +84,11 @@ import java.lang.ref.WeakReference; * href="package-summary.html#threading">Swing's Threading * Policy. * - * @beaninfo - * attribute: isContainer false - * description: A component which allows for the interactive selection of a file. - * * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component which allows for the interactive selection of a file.") +@SwingContainer(false) @SuppressWarnings("serial") // Superclass is not serializable across versions public class JFileChooser extends JComponent implements Accessible { @@ -456,11 +455,9 @@ public class JFileChooser extends JComponent implements Accessible { * @see #setTransferHandler * @see TransferHandler * @since 1.4 - * - * @beaninfo - * description: determines whether automatic drag handling is enabled - * bound: false */ + @BeanProperty(bound = false, description + = "determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) { checkDragEnabled(b); dragEnabled = b; @@ -505,14 +502,11 @@ public class JFileChooser extends JComponent implements Accessible { * not the current directory, changes the current directory * to be the file's parent directory. * - * @beaninfo - * preferred: true - * bound: true - * * @see #getSelectedFile * * @param file the selected file */ + @BeanProperty(preferred = true) public void setSelectedFile(File file) { File oldValue = selectedFile; selectedFile = file; @@ -546,10 +540,9 @@ public class JFileChooser extends JComponent implements Accessible { * set to allow multiple selection. * * @param selectedFiles an array {@code File}s to be selected - * @beaninfo - * bound: true - * description: The list of selected files if the chooser is in multiple selection mode. */ + @BeanProperty(description + = "The list of selected files if the chooser is in multiple selection mode.") public void setSelectedFiles(File[] selectedFiles) { File[] oldValue = this.selectedFiles; if (selectedFiles == null || selectedFiles.length == 0) { @@ -586,14 +579,11 @@ public class JFileChooser extends JComponent implements Accessible { * until it finds a traversable directory, or hits the root of the * file system. * - * @beaninfo - * preferred: true - * bound: true - * description: The directory that the JFileChooser is showing files of. - * * @param dir the current directory to point to * @see #getCurrentDirectory */ + @BeanProperty(preferred = true, description + = "The directory that the JFileChooser is showing files of.") public void setCurrentDirectory(File dir) { File oldValue = currentDirectory; @@ -881,15 +871,12 @@ public class JFileChooser extends JComponent implements Accessible { * @param b false if control buttons should not be * shown; otherwise, true * - * @beaninfo - * preferred: true - * bound: true - * description: Sets whether the approve & cancel buttons are shown. - * * @see #getControlButtonsAreShown * @see #CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY * @since 1.3 */ + @BeanProperty(preferred = true, description + = "Sets whether the approve & cancel buttons are shown.") public void setControlButtonsAreShown(boolean b) { if(controlsShown == b) { return; @@ -939,19 +926,16 @@ public class JFileChooser extends JComponent implements Accessible { * * @exception IllegalArgumentException if dialogType is * not legal - * @beaninfo - * preferred: true - * bound: true - * description: The type (open, save, custom) of the JFileChooser. - * enum: - * OPEN_DIALOG JFileChooser.OPEN_DIALOG - * SAVE_DIALOG JFileChooser.SAVE_DIALOG - * CUSTOM_DIALOG JFileChooser.CUSTOM_DIALOG * * @see #getDialogType * @see #setApproveButtonText */ // PENDING(jeff) - fire button text change property + @BeanProperty(preferred = true, enumerationValues = { + "JFileChooser.OPEN_DIALOG", + "JFileChooser.SAVE_DIALOG", + "JFileChooser.CUSTOM_DIALOG"}, description + = "The type (open, save, custom) of the JFileChooser.") public void setDialogType(int dialogType) { if(this.dialogType == dialogType) { return; @@ -979,14 +963,11 @@ public class JFileChooser extends JComponent implements Accessible { * * @param dialogTitle the new String for the title bar * - * @beaninfo - * preferred: true - * bound: true - * description: The title of the JFileChooser dialog window. - * * @see #getDialogTitle * */ + @BeanProperty(preferred = true, description + = "The title of the JFileChooser dialog window.") public void setDialogTitle(String dialogTitle) { String oldValue = this.dialogTitle; this.dialogTitle = dialogTitle; @@ -1016,16 +997,13 @@ public class JFileChooser extends JComponent implements Accessible { * Sets the tooltip text used in the ApproveButton. * If null, the UI object will determine the button's text. * - * @beaninfo - * preferred: true - * bound: true - * description: The tooltip text for the ApproveButton. - * * @param toolTipText the tooltip text for the approve button * @see #setApproveButtonText * @see #setDialogType * @see #showDialog */ + @BeanProperty(preferred = true, description + = "The tooltip text for the ApproveButton.") public void setApproveButtonToolTipText(String toolTipText) { if(approveButtonToolTipText == toolTipText) { return; @@ -1065,13 +1043,10 @@ public class JFileChooser extends JComponent implements Accessible { * * @param mnemonic an integer value for the mnemonic key * - * @beaninfo - * preferred: true - * bound: true - * description: The mnemonic key accelerator for the ApproveButton. - * * @see #getApproveButtonMnemonic */ + @BeanProperty(preferred = true, description + = "The mnemonic key accelerator for the ApproveButton.") public void setApproveButtonMnemonic(int mnemonic) { if(approveButtonMnemonic == mnemonic) { return; @@ -1100,11 +1075,6 @@ public class JFileChooser extends JComponent implements Accessible { * Sets the text used in the ApproveButton in the * FileChooserUI. * - * @beaninfo - * preferred: true - * bound: true - * description: The text that goes in the ApproveButton. - * * @param approveButtonText the text used in the ApproveButton * * @see #getApproveButtonText @@ -1112,6 +1082,8 @@ public class JFileChooser extends JComponent implements Accessible { * @see #showDialog */ // PENDING(jeff) - have ui set this on dialog type change + @BeanProperty(preferred = true, description + = "The text that goes in the ApproveButton.") public void setApproveButtonText(String approveButtonText) { if(this.approveButtonText == approveButtonText) { return; @@ -1148,6 +1120,7 @@ public class JFileChooser extends JComponent implements Accessible { * @see #removeChoosableFileFilter * @see #resetChoosableFileFilters */ + @BeanProperty(bound = false) public FileFilter[] getChoosableFileFilters() { FileFilter[] filterArray = new FileFilter[filters.size()]; filters.copyInto(filterArray); @@ -1162,16 +1135,13 @@ public class JFileChooser extends JComponent implements Accessible { * @param filter the FileFilter to add to the choosable file * filter list * - * @beaninfo - * preferred: true - * bound: true - * description: Adds a filter to the list of user choosable file filters. - * * @see #getChoosableFileFilters * @see #removeChoosableFileFilter * @see #resetChoosableFileFilters * @see #setFileSelectionMode */ + @BeanProperty(preferred = true, description + = "Adds a filter to the list of user choosable file filters.") public void addChoosableFileFilter(FileFilter filter) { if(filter != null && !filters.contains(filter)) { FileFilter[] oldValue = getChoosableFileFilters(); @@ -1249,6 +1219,7 @@ public class JFileChooser extends JComponent implements Accessible { * * @return the {@code AcceptAll} file filter */ + @BeanProperty(bound = false) public FileFilter getAcceptAllFileFilter() { FileFilter filter = null; if(getUI() != null) { @@ -1277,16 +1248,14 @@ public class JFileChooser extends JComponent implements Accessible { * * @param b a {@code boolean} which determines whether the {@code AcceptAll} * file filter is an available choice in the choosable filter list - * @beaninfo - * preferred: true - * bound: true - * description: Sets whether the AcceptAll FileFilter is used as an available choice in the choosable filter list. * * @see #isAcceptAllFileFilterUsed * @see #getAcceptAllFileFilter * @see #setFileFilter * @since 1.3 */ + @BeanProperty(preferred = true, description + = "Sets whether the AcceptAll FileFilter is used as an available choice in the choosable filter list.") public void setAcceptAllFileFilterUsed(boolean b) { boolean oldValue = useAcceptAllFileFilter; useAcceptAllFileFilter = b; @@ -1320,11 +1289,9 @@ public class JFileChooser extends JComponent implements Accessible { * file chooser. * * @param newAccessory the accessory component to be set - * @beaninfo - * preferred: true - * bound: true - * description: Sets the accessory component on the JFileChooser. */ + @BeanProperty(preferred = true, description + = "Sets the accessory component on the JFileChooser.") public void setAccessory(JComponent newAccessory) { JComponent oldValue = accessory; accessory = newAccessory; @@ -1346,17 +1313,14 @@ public class JFileChooser extends JComponent implements Accessible { * * @exception IllegalArgumentException if mode is an * illegal file selection mode - * @beaninfo - * preferred: true - * bound: true - * description: Sets the types of files that the JFileChooser can choose. - * enum: FILES_ONLY JFileChooser.FILES_ONLY - * DIRECTORIES_ONLY JFileChooser.DIRECTORIES_ONLY - * FILES_AND_DIRECTORIES JFileChooser.FILES_AND_DIRECTORIES - * * * @see #getFileSelectionMode */ + @BeanProperty(preferred = true, enumerationValues = { + "JFileChooser.FILES_ONLY", + "JFileChooser.DIRECTORIES_ONLY", + "JFileChooser.FILES_AND_DIRECTORIES"}, description + = "Sets the types of files that the JFileChooser can choose.") public void setFileSelectionMode(int mode) { if(fileSelectionMode == mode) { return; @@ -1400,6 +1364,7 @@ public class JFileChooser extends JComponent implements Accessible { * @see #setFileSelectionMode * @see #getFileSelectionMode */ + @BeanProperty(bound = false) public boolean isFileSelectionEnabled() { return ((fileSelectionMode == FILES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES)); } @@ -1412,6 +1377,7 @@ public class JFileChooser extends JComponent implements Accessible { * @see #setFileSelectionMode * @see #getFileSelectionMode */ + @BeanProperty(bound = false) public boolean isDirectorySelectionEnabled() { return ((fileSelectionMode == DIRECTORIES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES)); } @@ -1420,12 +1386,11 @@ public class JFileChooser extends JComponent implements Accessible { * Sets the file chooser to allow multiple file selections. * * @param b true if multiple files may be selected - * @beaninfo - * bound: true - * description: Sets multiple file selection mode. * * @see #isMultiSelectionEnabled */ + @BeanProperty(description + = "Sets multiple file selection mode.") public void setMultiSelectionEnabled(boolean b) { if(multiSelectionEnabled == b) { return; @@ -1461,15 +1426,12 @@ public class JFileChooser extends JComponent implements Accessible { * in the file chooser. The job of determining which files are * shown is done by the FileView. * - * @beaninfo - * preferred: true - * bound: true - * description: Sets file hiding on or off. - * * @param b the boolean value that determines whether file hiding is * turned on * @see #isFileHidingEnabled */ + @BeanProperty(preferred = true, description + = "Sets file hiding on or off.") public void setFileHidingEnabled(boolean b) { // Dump showFilesListener since we'll ignore it from now on if (showFilesListener != null) { @@ -1485,14 +1447,11 @@ public class JFileChooser extends JComponent implements Accessible { * Sets the current file filter. The file filter is used by the * file chooser to filter out files from the user's view. * - * @beaninfo - * preferred: true - * bound: true - * description: Sets the File Filter used to filter out files of type. - * * @param filter the new current file filter to use * @see #getFileFilter */ + @BeanProperty(preferred = true, description + = "Sets the File Filter used to filter out files of type.") public void setFileFilter(FileFilter filter) { FileFilter oldValue = fileFilter; fileFilter = filter; @@ -1534,13 +1493,11 @@ public class JFileChooser extends JComponent implements Accessible { * the icon that represents a file or the type description of a file. * * @param fileView a {@code FileView} to be used to retrieve UI information - * @beaninfo - * preferred: true - * bound: true - * description: Sets the File View used to get file type information. * * @see #getFileView */ + @BeanProperty(preferred = true, description + = "Sets the File View used to get file type information.") public void setFileView(FileView fileView) { FileView oldValue = this.fileView; this.fileView = fileView; @@ -1704,13 +1661,10 @@ public class JFileChooser extends JComponent implements Accessible { * the floppy drive and getting a list of root drives. * @param fsv the new FileSystemView * - * @beaninfo - * expert: true - * bound: true - * description: Sets the FileSytemView used to get filesystem information. - * * @see FileSystemView */ + @BeanProperty(expert = true, description + = "Sets the FileSytemView used to get filesystem information.") public void setFileSystemView(FileSystemView fsv) { FileSystemView oldValue = fileSystemView; fileSystemView = fsv; @@ -1801,6 +1755,7 @@ public class JFileChooser extends JComponent implements Accessible { * * @since 1.4 */ + @BeanProperty(bound = false) public ActionListener[] getActionListeners() { return listenerList.getListeners(ActionListener.class); } @@ -1895,10 +1850,9 @@ public class JFileChooser extends JComponent implements Accessible { * @return the string "FileChooserUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class.") public String getUIClassID() { return uiClassID; } @@ -1908,6 +1862,7 @@ public class JFileChooser extends JComponent implements Accessible { * * @return the FileChooserUI object that implements the FileChooserUI L&F */ + @BeanProperty(bound = false) public FileChooserUI getUI() { return (FileChooserUI) ui; } @@ -2070,6 +2025,7 @@ public class JFileChooser extends JComponent implements Accessible { * @return an AccessibleJFileChooser that serves as the * AccessibleContext of this JFileChooser */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJFileChooser(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JFormattedTextField.java b/jdk/src/java.desktop/share/classes/javax/swing/JFormattedTextField.java index e15d327a0f8..b30f3a52f7f 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JFormattedTextField.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JFormattedTextField.java @@ -27,6 +27,8 @@ package javax.swing; import java.awt.*; import java.awt.event.*; import java.awt.im.InputContext; +import java.beans.BeanProperty; +import java.beans.JavaBean; import java.io.*; import java.text.*; import java.util.*; @@ -176,6 +178,7 @@ import javax.swing.text.*; * * @since 1.4 */ +@JavaBean @SuppressWarnings("serial") // Same-version serialization only public class JFormattedTextField extends JTextField { private static final String uiClassID = "FormattedTextFieldUI"; @@ -357,13 +360,13 @@ public class JFormattedTextField extends JTextField { * @param behavior Identifies behavior when focus is lost * @throws IllegalArgumentException if behavior is not one of the known * values - * @beaninfo - * enum: COMMIT JFormattedTextField.COMMIT - * COMMIT_OR_REVERT JFormattedTextField.COMMIT_OR_REVERT - * REVERT JFormattedTextField.REVERT - * PERSIST JFormattedTextField.PERSIST - * description: Behavior when component loses focus */ + @BeanProperty(bound = false, enumerationValues = { + "JFormattedTextField.COMMIT", + "JFormattedTextField.COMMIT_OR_REVERT", + "JFormattedTextField.REVERT", + "JFormattedTextField.PERSIST"}, description + = "Behavior when component loses focus") public void setFocusLostBehavior(int behavior) { if (behavior != COMMIT && behavior != COMMIT_OR_REVERT && behavior != PERSIST && behavior != REVERT) { @@ -407,12 +410,9 @@ public class JFormattedTextField extends JTextField { * * @param tf AbstractFormatterFactory used to lookup * instances of AbstractFormatter - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: AbstractFormatterFactory, responsible for returning an - * AbstractFormatter that can format the current value. */ + @BeanProperty(visualUpdate = true, description + = "AbstractFormatterFactory, responsible for returning an AbstractFormatter that can format the current value.") public void setFormatterFactory(AbstractFormatterFactory tf) { AbstractFormatterFactory oldFactory = factory; @@ -448,10 +448,6 @@ public class JFormattedTextField extends JTextField { * * @see #setFormatterFactory * @param format AbstractFormatter to use for formatting - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: TextFormatter, responsible for formatting the current value */ protected void setFormatter(AbstractFormatter format) { AbstractFormatter oldFormat = this.format; @@ -474,6 +470,8 @@ public class JFormattedTextField extends JTextField { * * @return AbstractFormatter used for formatting */ + @BeanProperty(visualUpdate = true, description + = "TextFormatter, responsible for formatting the current value") public AbstractFormatter getFormatter() { return format; } @@ -490,11 +488,9 @@ public class JFormattedTextField extends JTextField { * This is a JavaBeans bound property. * * @param value Current value to display - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The value to be formatted. */ + @BeanProperty(visualUpdate = true, description + = "The value to be formatted.") public void setValue(Object value) { if (value != null && getFormatterFactory() == null) { setFormatterFactory(getDefaultFormatterFactory(value)); @@ -544,11 +540,9 @@ public class JFormattedTextField extends JTextField { * * @param isValid boolean indicating if the currently edited value is * valid. - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: True indicates the edited value is valid */ + @BeanProperty(visualUpdate = true, description + = "True indicates the edited value is valid") private void setEditValid(boolean isValid) { if (isValid != editValid) { editValid = isValid; @@ -564,6 +558,7 @@ public class JFormattedTextField extends JTextField { * * @return true if the current value being edited is valid. */ + @BeanProperty(bound = false) public boolean isEditValid() { return editValid; } @@ -673,6 +668,7 @@ public class JFormattedTextField extends JTextField { * * @return the command list */ + @BeanProperty(bound = false) public Action[] getActions() { return TextAction.augmentList(super.getActions(), defaultActions); } @@ -683,6 +679,7 @@ public class JFormattedTextField extends JTextField { * @return the string "FormattedTextFieldUI" * @see JComponent#getUIClassID */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -695,11 +692,9 @@ public class JFormattedTextField extends JTextField { * * @param doc the document to display/edit * @see #getDocument - * @beaninfo - * description: the text document model - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the text document model") public void setDocument(Document doc) { if (documentListener != null && getDocument() != null) { getDocument().removeDocumentListener(documentListener); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java b/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java index c8415e70f58..275137d503a 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java @@ -36,12 +36,14 @@ import java.awt.Image; import java.awt.LayoutManager; import java.awt.event.WindowEvent; +import java.beans.JavaBean; +import java.beans.BeanProperty; + import javax.accessibility.Accessible; import javax.accessibility.AccessibleContext; import javax.accessibility.AccessibleState; import javax.accessibility.AccessibleStateSet; - /** * An extended version of java.awt.Frame that adds support for * the JFC/Swing component architecture. @@ -111,16 +113,13 @@ import javax.accessibility.AccessibleStateSet; * @see java.awt.event.WindowListener#windowClosing * @see javax.swing.RootPaneContainer * - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getContentPane - * description: A toplevel window which can be minimized to an icon. - * * @author Jeff Dinkins * @author Georges Saab * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "JMenuBar", description = "A toplevel window which can be minimized to an icon.") +@SwingContainer(delegate = "getContentPane") @SuppressWarnings("serial") // Same-version serialization only public class JFrame extends Frame implements WindowConstants, Accessible, @@ -368,16 +367,13 @@ public class JFrame extends Frame implements WindowConstants, * SecurityManager will * not allow the caller to invoke System.exit * @see java.lang.Runtime#exit(int) - * - * @beaninfo - * preferred: true - * bound: true - * enum: DO_NOTHING_ON_CLOSE WindowConstants.DO_NOTHING_ON_CLOSE - * HIDE_ON_CLOSE WindowConstants.HIDE_ON_CLOSE - * DISPOSE_ON_CLOSE WindowConstants.DISPOSE_ON_CLOSE - * EXIT_ON_CLOSE WindowConstants.EXIT_ON_CLOSE - * description: The frame's default close operation. */ + @BeanProperty(preferred = true, enumerationValues = { + "WindowConstants.DO_NOTHING_ON_CLOSE", + "WindowConstants.HIDE_ON_CLOSE", + "WindowConstants.DISPOSE_ON_CLOSE", + "WindowConstants.EXIT_ON_CLOSE"}, description + = "The frame's default close operation.") public void setDefaultCloseOperation(int operation) { if (operation != DO_NOTHING_ON_CLOSE && operation != HIDE_ON_CLOSE && @@ -440,12 +436,9 @@ public class JFrame extends Frame implements WindowConstants, * @see #getTransferHandler * @see java.awt.Component#setDropTarget * @since 1.6 - * - * @beaninfo - * bound: true - * hidden: true - * description: Mechanism for transfer of data into the component */ + @BeanProperty(hidden = true, description + = "Mechanism for transfer of data into the component") public void setTransferHandler(TransferHandler newHandler) { TransferHandler oldHandler = transferHandler; transferHandler = newHandler; @@ -481,11 +474,9 @@ public class JFrame extends Frame implements WindowConstants, * @param menubar the menubar being placed in the frame * * @see #getJMenuBar - * - * @beaninfo - * hidden: true - * description: The menubar for accessing pulldown menus from this frame. */ + @BeanProperty(bound = false, hidden = true, description + = "The menubar for accessing pulldown menus from this frame.") public void setJMenuBar(final JMenuBar menubar) { getRootPane().setJMenuBar(menubar); } @@ -529,10 +520,9 @@ public class JFrame extends Frame implements WindowConstants, * @see #setLayout * @see #isRootPaneCheckingEnabled * @see javax.swing.RootPaneContainer - * @beaninfo - * hidden: true - * description: Whether the add and setLayout methods are forwarded */ + @BeanProperty(hidden = true, description + = "Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled) { rootPaneCheckingEnabled = enabled; } @@ -616,6 +606,8 @@ public class JFrame extends Frame implements WindowConstants, * @see #setRootPane * @see RootPaneContainer#getRootPane */ + @BeanProperty(bound = false, hidden = true, description + = "the RootPane object for this frame.") public JRootPane getRootPane() { return rootPane; } @@ -627,10 +619,6 @@ public class JFrame extends Frame implements WindowConstants, * @param root the rootPane object for this frame * * @see #getRootPane - * - * @beaninfo - * hidden: true - * description: the RootPane object for this frame. */ protected void setRootPane(JRootPane root) { @@ -684,12 +672,9 @@ public class JFrame extends Frame implements WindowConstants, * @see #getContentPane * @see RootPaneContainer#setContentPane * @see JRootPane - * - * @beaninfo - * hidden: true - * description: The client area of the frame where child - * components are normally inserted. */ + @BeanProperty(bound = false, hidden = true, description + = "The client area of the frame where child components are normally inserted.") public void setContentPane(Container contentPane) { getRootPane().setContentPane(contentPane); } @@ -714,11 +699,9 @@ public class JFrame extends Frame implements WindowConstants, * exception) if the layered pane parameter is null * @see #getLayeredPane * @see RootPaneContainer#setLayeredPane - * - * @beaninfo - * hidden: true - * description: The pane that holds the various frame layers. */ + @BeanProperty(bound = false, hidden = true, description + = "The pane that holds the various frame layers.") public void setLayeredPane(JLayeredPane layeredPane) { getRootPane().setLayeredPane(layeredPane); } @@ -741,11 +724,9 @@ public class JFrame extends Frame implements WindowConstants, * * @see #getGlassPane * @see RootPaneContainer#setGlassPane - * - * @beaninfo - * hidden: true - * description: A transparent pane used for menu rendering. */ + @BeanProperty(bound = false, hidden = true, description + = "A transparent pane used for menu rendering.") public void setGlassPane(Component glassPane) { getRootPane().setGlassPane(glassPane); } @@ -755,6 +736,7 @@ public class JFrame extends Frame implements WindowConstants, * * @since 1.6 */ + @BeanProperty(bound = false) public Graphics getGraphics() { JComponent.getGraphicsInvoked(this); return super.getGraphics(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java b/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java index 8860915a82e..2297fdacdc0 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java @@ -27,8 +27,7 @@ package javax.swing; import java.awt.*; -import java.beans.PropertyVetoException; -import java.beans.PropertyChangeEvent; +import java.beans.*; import javax.swing.event.InternalFrameEvent; import javax.swing.event.InternalFrameListener; @@ -38,7 +37,7 @@ import javax.accessibility.*; import java.io.ObjectOutputStream; import java.io.IOException; -import java.beans.PropertyChangeListener; + import sun.awt.AppContext; import sun.swing.SwingUtilities2; @@ -104,12 +103,9 @@ import sun.swing.SwingUtilities2; * @author David Kloba * @author Rich Schiavi * @since 1.2 - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getContentPane - * description: A frame container which is contained within - * another window. */ +@JavaBean(defaultProperty = "JMenuBar", description = "A frame container which is contained within another window.") +@SwingContainer(delegate = "getContentPane") @SuppressWarnings("serial") // Same-version serialization only public class JInternalFrame extends JComponent implements Accessible, WindowConstants, @@ -377,12 +373,9 @@ public class JInternalFrame extends JComponent implements /** * Sets the UI delegate for this JInternalFrame. * @param ui the UI delegate - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(InternalFrameUI ui) { boolean checkingEnabled = isRootPaneCheckingEnabled(); try { @@ -434,10 +427,9 @@ public class JInternalFrame extends JComponent implements * * @see JComponent#getUIClassID * @see UIDefaults#getUI - * - * @beaninfo - * description: UIClassID */ + @BeanProperty(bound = false, description + = "UIClassID") public String getUIClassID() { return uiClassID; } @@ -470,10 +462,9 @@ public class JInternalFrame extends JComponent implements * @see #setLayout * @see #isRootPaneCheckingEnabled * @see javax.swing.RootPaneContainer - * @beaninfo - * hidden: true - * description: Whether the add and setLayout methods are forwarded */ + @BeanProperty(hidden = true, description + = "Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled) { rootPaneCheckingEnabled = enabled; } @@ -595,12 +586,9 @@ public class JInternalFrame extends JComponent implements * * @param m the JMenuBar to use in this internal frame * @see #getJMenuBar - * @beaninfo - * bound: true - * preferred: true - * description: The menu bar for accessing pulldown menus - * from this internal frame. */ + @BeanProperty(preferred = true, description + = "The menu bar for accessing pulldown menus from this internal frame.") public void setJMenuBar(JMenuBar m){ JMenuBar oldValue = getMenuBar(); getRootPane().setJMenuBar(m); @@ -626,12 +614,9 @@ public class JInternalFrame extends JComponent implements * @exception java.awt.IllegalComponentStateException (a runtime * exception) if the content pane parameter is null * @see RootPaneContainer#getContentPane - * @beaninfo - * bound: true - * hidden: true - * description: The client area of the internal frame where child - * components are normally inserted. */ + @BeanProperty(hidden = true, description + = "The client area of the internal frame where child components are normally inserted.") public void setContentPane(Container c) { Container oldValue = getContentPane(); getRootPane().setContentPane(c); @@ -658,11 +643,9 @@ public class JInternalFrame extends JComponent implements * @exception java.awt.IllegalComponentStateException (a runtime * exception) if the layered pane parameter is null * @see RootPaneContainer#setLayeredPane - * @beaninfo - * hidden: true - * bound: true - * description: The pane which holds the various desktop layers. */ + @BeanProperty(hidden = true, description + = "The pane which holds the various desktop layers.") public void setLayeredPane(JLayeredPane layered) { JLayeredPane oldValue = getLayeredPane(); getRootPane().setLayeredPane(layered); @@ -685,11 +668,9 @@ public class JInternalFrame extends JComponent implements * * @param glass the glass pane for this internal frame * @see RootPaneContainer#getGlassPane - * @beaninfo - * bound: true - * hidden: true - * description: A transparent pane used for menu rendering. */ + @BeanProperty(hidden = true, description + = "A transparent pane used for menu rendering.") public void setGlassPane(Component glass) { Component oldValue = getGlassPane(); getRootPane().setGlassPane(glass); @@ -702,6 +683,8 @@ public class JInternalFrame extends JComponent implements * @return the rootPane property * @see RootPaneContainer#getRootPane */ + @BeanProperty(hidden = true, description + = "The root pane used by this internal frame.") public JRootPane getRootPane() { return rootPane; } @@ -713,10 +696,6 @@ public class JInternalFrame extends JComponent implements * This method is called by the constructor. * * @param root the new JRootPane object - * @beaninfo - * bound: true - * hidden: true - * description: The root pane used by this internal frame. */ protected void setRootPane(JRootPane root) { if(rootPane != null) { @@ -741,11 +720,9 @@ public class JInternalFrame extends JComponent implements * Sets whether this JInternalFrame can be closed by * some user action. * @param b a boolean value, where true means this internal frame can be closed - * @beaninfo - * preferred: true - * bound: true - * description: Indicates whether this internal frame can be closed. */ + @BeanProperty(preferred = true, description + = "Indicates whether this internal frame can be closed.") public void setClosable(boolean b) { Boolean oldValue = closable ? Boolean.TRUE : Boolean.FALSE; Boolean newValue = b ? Boolean.TRUE : Boolean.FALSE; @@ -807,12 +784,9 @@ public class JInternalFrame extends JComponent implements * @see #setDefaultCloseOperation * @see #dispose * @see javax.swing.event.InternalFrameEvent#INTERNAL_FRAME_CLOSING - * - * @beaninfo - * bound: true - * constrained: true - * description: Indicates whether this internal frame has been closed. */ + @BeanProperty(description + = "Indicates whether this internal frame has been closed.") public void setClosed(boolean b) throws PropertyVetoException { if (isClosed == b) { return; @@ -844,12 +818,9 @@ public class JInternalFrame extends JComponent implements * user action. * * @param b a boolean, where true means this internal frame can be resized - * @beaninfo - * preferred: true - * bound: true - * description: Determines whether this internal frame can be resized - * by the user. */ + @BeanProperty(preferred = true, description + = "Determines whether this internal frame can be resized by the user.") public void setResizable(boolean b) { Boolean oldValue = resizable ? Boolean.TRUE : Boolean.FALSE; Boolean newValue = b ? Boolean.TRUE : Boolean.FALSE; @@ -877,11 +848,9 @@ public class JInternalFrame extends JComponent implements * they will ignore this property. * * @param b a boolean, where true means this internal frame can be iconified - * @beaninfo - * preferred: true - bound: true - * description: Determines whether this internal frame can be iconified. */ + @BeanProperty(preferred = true, description + = "Determines whether this internal frame can be iconified.") public void setIconifiable(boolean b) { Boolean oldValue = iconable ? Boolean.TRUE : Boolean.FALSE; Boolean newValue = b ? Boolean.TRUE : Boolean.FALSE; @@ -925,12 +894,9 @@ public class JInternalFrame extends JComponent implements * * @see InternalFrameEvent#INTERNAL_FRAME_ICONIFIED * @see InternalFrameEvent#INTERNAL_FRAME_DEICONIFIED - * - * @beaninfo - * bound: true - * constrained: true - * description: The image displayed when this internal frame is minimized. */ + @BeanProperty(description + = "The image displayed when this internal frame is minimized.") public void setIcon(boolean b) throws PropertyVetoException { if (isIcon == b) { return; @@ -964,11 +930,9 @@ public class JInternalFrame extends JComponent implements * they will ignore this property. * * @param b true to specify that this internal frame should be maximizable; false to specify that it should not be - * @beaninfo - * bound: true - * preferred: true - * description: Determines whether this internal frame can be maximized. */ + @BeanProperty(preferred = true, description + = "Determines whether this internal frame can be maximized.") public void setMaximizable(boolean b) { Boolean oldValue = maximizable ? Boolean.TRUE : Boolean.FALSE; Boolean newValue = b ? Boolean.TRUE : Boolean.FALSE; @@ -1006,11 +970,9 @@ public class JInternalFrame extends JComponent implements * restores it * @exception PropertyVetoException when the attempt to set the * property is vetoed by the JInternalFrame - * @beaninfo - * bound: true - * constrained: true - * description: Indicates whether this internal frame is maximized. */ + @BeanProperty(description + = "Indicates whether this internal frame is maximized.") public void setMaximum(boolean b) throws PropertyVetoException { if (isMaximum == b) { return; @@ -1042,11 +1004,9 @@ public class JInternalFrame extends JComponent implements * @see #getTitle * * @param title the String to display in the title bar - * @beaninfo - * preferred: true - * bound: true - * description: The text displayed in the title bar. */ + @BeanProperty(preferred = true, description + = "The text displayed in the title bar.") public void setTitle(String title) { String oldValue = this.title; this.title = title; @@ -1076,13 +1036,9 @@ public class JInternalFrame extends JComponent implements * @see #isShowing * @see InternalFrameEvent#INTERNAL_FRAME_ACTIVATED * @see InternalFrameEvent#INTERNAL_FRAME_DEACTIVATED - * - * @beaninfo - * constrained: true - * bound: true - * description: Indicates whether this internal frame is currently - * the active frame. */ + @BeanProperty(description + = "Indicates whether this internal frame is currently the active frame.") public void setSelected(boolean selected) throws PropertyVetoException { // The InternalFrame may already be selected, but the focus // may be outside it, so restore the focus to the subcomponent @@ -1153,10 +1109,9 @@ public class JInternalFrame extends JComponent implements * * @param icon the Icon to display in the title bar * @see #getFrameIcon - * @beaninfo - * bound: true - * description: The icon shown in the top-left corner of this internal frame. */ + @BeanProperty(description + = "The icon shown in the top-left corner of this internal frame.") public void setFrameIcon(Icon icon) { Icon oldIcon = frameIcon; frameIcon = icon; @@ -1214,6 +1169,7 @@ public class JInternalFrame extends JComponent implements * @return the last non-resizable Cursor * @since 1.6 */ + @BeanProperty(bound = false) public Cursor getLastCursor() { return lastCursor; } @@ -1249,10 +1205,9 @@ public class JInternalFrame extends JComponent implements * frame's desktop layer * @throws NullPointerException if {@code layer} is {@code null} * @see JLayeredPane - * @beaninfo - * expert: true - * description: Specifies what desktop layer is used. */ + @BeanProperty(bound = false, expert = true, description + = "Specifies what desktop layer is used.") public void setLayer(Integer layer) { if(getParent() != null && getParent() instanceof JLayeredPane) { // Normally we want to do this, as it causes the LayeredPane @@ -1280,10 +1235,9 @@ public class JInternalFrame extends JComponent implements * * @see #setLayer(Integer) * @see JLayeredPane - * @beaninfo - * expert: true - * description: Specifies what desktop layer is used. */ + @BeanProperty(bound = false, expert = true, description + = "Specifies what desktop layer is used.") public void setLayer(int layer) { this.setLayer(Integer.valueOf(layer)); } @@ -1307,6 +1261,7 @@ public class JInternalFrame extends JComponent implements * @return the JDesktopPane this internal frame belongs to, * or null if none is found */ + @BeanProperty(bound = false) public JDesktopPane getDesktopPane() { Container p; @@ -1331,10 +1286,9 @@ public class JInternalFrame extends JComponent implements * * @param d the JDesktopIcon to display on the desktop * @see #getDesktopIcon - * @beaninfo - * bound: true - * description: The icon shown when this internal frame is minimized. */ + @BeanProperty(description + = "The icon shown when this internal frame is minimized.") public void setDesktopIcon(JDesktopIcon d) { JDesktopIcon oldValue = getDesktopIcon(); desktopIcon = d; @@ -1424,6 +1378,7 @@ public class JInternalFrame extends JComponent implements * @see #isSelected * @since 1.4 */ + @BeanProperty(bound = false) public Component getMostRecentFocusOwner() { if (isSelected()) { return getFocusOwner(); @@ -1538,6 +1493,7 @@ public class JInternalFrame extends JComponent implements * * @see #addInternalFrameListener */ + @BeanProperty(bound = false) public InternalFrameListener[] getInternalFrameListeners() { return listenerList.getListeners(InternalFrameListener.class); } @@ -1871,6 +1827,7 @@ public class JInternalFrame extends JComponent implements * @see java.awt.Container#isFocusCycleRoot() * @since 1.4 */ + @BeanProperty(bound = false) public final Container getFocusCycleRootAncestor() { return null; } @@ -1883,6 +1840,7 @@ public class JInternalFrame extends JComponent implements * @return null * @see java.awt.Window#getWarningString */ + @BeanProperty(bound = false) public final String getWarningString() { return null; } @@ -2018,6 +1976,7 @@ public class JInternalFrame extends JComponent implements * JInternalFrame * @see AccessibleJInternalFrame */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJInternalFrame(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JLabel.java b/jdk/src/java.desktop/share/classes/javax/swing/JLabel.java index 3191f84ccf5..6426c7de84f 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JLabel.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JLabel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,28 +22,23 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.Component; -import java.awt.Font; import java.awt.Image; import java.awt.*; import java.text.*; import java.awt.geom.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.Transient; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import javax.swing.plaf.LabelUI; import javax.accessibility.*; import javax.swing.text.*; -import javax.swing.text.html.*; -import javax.swing.plaf.basic.*; -import java.util.*; - /** * A display area for a short text string or an image, @@ -98,13 +93,11 @@ import java.util.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A component that displays a short string and an icon. - * * @author Hans Muller * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that displays a short string and an icon.") +@SwingContainer(false) @SuppressWarnings("serial") public class JLabel extends JComponent implements SwingConstants, Accessible { @@ -256,12 +249,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @param ui the LabelUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(LabelUI ui) { super.setUI(ui); // disabled icon is generated by LF so it should be unset here @@ -277,7 +267,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @see JComponent#updateUI */ public void updateUI() { - setUI((LabelUI)UIManager.getUI(this)); + setUI((LabelUI) UIManager.getUI(this)); } @@ -290,6 +280,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -318,12 +309,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @see #setVerticalTextPosition * @see #setHorizontalTextPosition * @see #setIcon - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: Defines the single line of text this component will display. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "Defines the single line of text this component will display.") public void setText(String text) { String oldAccessibleName = null; @@ -375,12 +363,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @see #setVerticalTextPosition * @see #setHorizontalTextPosition * @see #getIcon - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The icon this component will display. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The icon this component will display.") public void setIcon(Icon icon) { Icon oldValue = defaultIcon; defaultIcon = icon; @@ -452,11 +437,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @param disabledIcon the Icon to display when the component is disabled * @see #getDisabledIcon * @see #setEnabled - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The icon to display if the label is disabled. */ + @BeanProperty(visualUpdate = true, description + = "The icon to display if the label is disabled.") public void setDisabledIcon(Icon disabledIcon) { Icon oldValue = this.disabledIcon; this.disabledIcon = disabledIcon; @@ -485,11 +468,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @param key a keycode that indicates a mnemonic key * @see #getLabelFor * @see #setLabelFor - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The mnemonic keycode. */ + @BeanProperty(visualUpdate = true, description + = "The mnemonic keycode.") public void setDisplayedMnemonic(int key) { int oldKey = mnemonic; mnemonic = key; @@ -555,13 +536,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * @param index Index into the String to underline * @exception IllegalArgumentException will be thrown if index * is >= length of the text, or < -1 - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the index into the String to draw the keyboard character - * mnemonic at */ + @BeanProperty(visualUpdate = true, description + = "the index into the String to draw the keyboard character mnemonic at") public void setDisplayedMnemonicIndex(int index) throws IllegalArgumentException { int oldValue = mnemonicIndex; @@ -665,12 +642,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @param iconTextGap the space between the icon and text properties * @see #getIconTextGap - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If both the icon and text properties are set, this - * property defines the space between them. */ + @BeanProperty(visualUpdate = true, description + = "If both the icon and text properties are set, this property defines the space between them.") public void setIconTextGap(int iconTextGap) { int oldValue = this.iconTextGap; this.iconTextGap = iconTextGap; @@ -713,14 +687,12 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @see SwingConstants * @see #getVerticalAlignment - * @beaninfo - * bound: true - * enum: TOP SwingConstants.TOP - * CENTER SwingConstants.CENTER - * BOTTOM SwingConstants.BOTTOM - * attribute: visualUpdate true - * description: The alignment of the label's contents along the Y axis. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.TOP", + "SwingConstants.CENTER", + "SwingConstants.BOTTOM"}, + description = "The alignment of the label's contents along the Y axis.") public void setVerticalAlignment(int alignment) { if (alignment == verticalAlignment) return; int oldValue = verticalAlignment; @@ -763,16 +735,14 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @see SwingConstants * @see #getHorizontalAlignment - * @beaninfo - * bound: true - * enum: LEFT SwingConstants.LEFT - * CENTER SwingConstants.CENTER - * RIGHT SwingConstants.RIGHT - * LEADING SwingConstants.LEADING - * TRAILING SwingConstants.TRAILING - * attribute: visualUpdate true - * description: The alignment of the label's content along the X axis. */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "SwingConstants.LEFT", + "SwingConstants.CENTER", + "SwingConstants.RIGHT", + "SwingConstants.LEADING", + "SwingConstants.TRAILING"}, description + = "The alignment of the label's content along the X axis.") public void setHorizontalAlignment(int alignment) { if (alignment == horizontalAlignment) return; int oldValue = horizontalAlignment; @@ -818,15 +788,12 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @see SwingConstants * @see #getVerticalTextPosition - * @beaninfo - * bound: true - * enum: TOP SwingConstants.TOP - * CENTER SwingConstants.CENTER - * BOTTOM SwingConstants.BOTTOM - * expert: true - * attribute: visualUpdate true - * description: The vertical position of the text relative to it's image. */ + @BeanProperty(expert = true, visualUpdate = true, enumerationValues = { + "SwingConstants.TOP", + "SwingConstants.CENTER", + "SwingConstants.BOTTOM"}, + description = "The vertical position of the text relative to it's image.") public void setVerticalTextPosition(int textPosition) { if (textPosition == verticalTextPosition) return; int old = verticalTextPosition; @@ -870,18 +837,14 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * TRAILING (the default). * * @see SwingConstants - * @beaninfo - * expert: true - * bound: true - * enum: LEFT SwingConstants.LEFT - * CENTER SwingConstants.CENTER - * RIGHT SwingConstants.RIGHT - * LEADING SwingConstants.LEADING - * TRAILING SwingConstants.TRAILING - * attribute: visualUpdate true - * description: The horizontal position of the label's text, - * relative to its image. */ + @BeanProperty(expert = true, visualUpdate = true, enumerationValues = { + "SwingConstants.LEFT", + "SwingConstants.CENTER", + "SwingConstants.RIGHT", + "SwingConstants.LEADING", + "SwingConstants.TRAILING"}, description + = "The horizontal position of the label's text, relative to its image.") public void setHorizontalTextPosition(int textPosition) { int old = horizontalTextPosition; this.horizontalTextPosition = checkHorizontalKey(textPosition, @@ -1035,11 +998,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * * @see #getDisplayedMnemonic * @see #setDisplayedMnemonic - * - * @beaninfo - * bound: true - * description: The component this is labelling. */ + @BeanProperty(description + = "The component this is labelling.") public void setLabelFor(Component c) { Component oldC = labelFor; labelFor = c; @@ -1057,10 +1018,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible * Get the AccessibleContext of this object * * @return the AccessibleContext of this object - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this Label. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this Label.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJLabel(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JLayeredPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JLayeredPane.java index ce5998f8f56..3d561b99bef 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JLayeredPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JLayeredPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -30,6 +30,9 @@ import java.util.Hashtable; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; +import java.beans.JavaBean; +import java.beans.BeanProperty; + import sun.awt.SunToolkit; import javax.accessibility.*; @@ -155,6 +158,7 @@ import javax.accessibility.*; * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "accessibleContext") @SuppressWarnings("serial") public class JLayeredPane extends JComponent implements Accessible { /// Watch the values in getObjectForLayer() @@ -275,6 +279,7 @@ public class JLayeredPane extends JComponent implements Accessible { * @return false if components can overlap, else true * @see JComponent#isOptimizedDrawingEnabled */ + @BeanProperty(bound = false) public boolean isOptimizedDrawingEnabled() { return optimizedDrawingPossible; } @@ -738,6 +743,7 @@ public class JLayeredPane extends JComponent implements Accessible { * @return an AccessibleJLayeredPane that serves as the * AccessibleContext of this JLayeredPane */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJLayeredPane(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JList.java b/jdk/src/java.desktop/share/classes/javax/swing/JList.java index 14379bd5668..0b5986e7b09 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JList.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JList.java @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.*; @@ -34,6 +33,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.Transient; @@ -44,7 +45,6 @@ import javax.swing.plaf.*; import javax.swing.text.Position; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import java.io.Serializable; @@ -52,7 +52,6 @@ import sun.swing.SwingUtilities2; import sun.swing.SwingUtilities2.Section; import static sun.swing.SwingUtilities2.Section.*; - /** * A component that displays a list of objects and allows the user to select * one or more items. A separate model, {@code ListModel}, maintains the @@ -271,13 +270,11 @@ import static sun.swing.SwingUtilities2.Section.*; * * @param the type of the elements of this list * - * @beaninfo - * attribute: isContainer false - * description: A component which allows for the selection of one or more objects from a list. - * * @author Hans Muller * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component which allows for the selection of one or more objects from a list.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JList extends JComponent implements Scrollable, Accessible { @@ -515,12 +512,9 @@ public class JList extends JComponent implements Scrollable, Accessible * * @param ui the ListUI object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(ListUI ui) { super.setUI(ui); } @@ -555,6 +549,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -640,11 +635,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setFixedCellWidth * @see #setFixedCellHeight * @see JComponent#addPropertyChangeListener - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The cell prototype value, used to compute cell width and height. */ + @BeanProperty(visualUpdate = true, description + = "The cell prototype value, used to compute cell width and height.") public void setPrototypeCellValue(E prototypeCellValue) { E oldValue = this.prototypeCellValue; this.prototypeCellValue = prototypeCellValue; @@ -685,11 +678,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setPrototypeCellValue * @see #setFixedCellWidth * @see JComponent#addPropertyChangeListener - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Defines a fixed cell width when greater than zero. */ + @BeanProperty(visualUpdate = true, description + = "Defines a fixed cell width when greater than zero.") public void setFixedCellWidth(int width) { int oldValue = fixedCellWidth; fixedCellWidth = width; @@ -721,11 +712,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setPrototypeCellValue * @see #setFixedCellWidth * @see JComponent#addPropertyChangeListener - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Defines a fixed cell height when greater than zero. */ + @BeanProperty(visualUpdate = true, description + = "Defines a fixed cell height when greater than zero.") public void setFixedCellHeight(int height) { int oldValue = fixedCellHeight; fixedCellHeight = height; @@ -763,11 +752,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @param cellRenderer the ListCellRenderer * that paints list cells * @see #getCellRenderer - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The component used to draw the cells. */ + @BeanProperty(visualUpdate = true, description + = "The component used to draw the cells.") public void setCellRenderer(ListCellRenderer cellRenderer) { ListCellRenderer oldValue = this.cellRenderer; this.cellRenderer = cellRenderer; @@ -818,11 +805,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setBackground * @see #setFont * @see DefaultListCellRenderer - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The foreground color of selected cells. */ + @BeanProperty(visualUpdate = true, description + = "The foreground color of selected cells.") public void setSelectionForeground(Color selectionForeground) { Color oldValue = this.selectionForeground; this.selectionForeground = selectionForeground; @@ -865,11 +850,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setBackground * @see #setFont * @see DefaultListCellRenderer - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The background color of selected cells. */ + @BeanProperty(visualUpdate = true, description + = "The background color of selected cells.") public void setSelectionBackground(Color selectionBackground) { Color oldValue = this.selectionBackground; this.selectionBackground = selectionBackground; @@ -920,12 +903,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setLayoutOrientation * @see JComponent#getVisibleRect * @see JViewport - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The preferred number of rows to display without - * requiring scrolling */ + @BeanProperty(visualUpdate = true, description + = "The preferred number of rows to display without requiring scrolling") public void setVisibleRowCount(int visibleRowCount) { int oldValue = this.visibleRowCount; this.visibleRowCount = Math.max(0, visibleRowCount); @@ -999,14 +979,12 @@ public class JList extends JComponent implements Scrollable, Accessible * @throws IllegalArgumentException if {@code layoutOrientation} isn't one of the * allowable values * @since 1.4 - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Defines the way list cells are layed out. - * enum: VERTICAL JList.VERTICAL - * HORIZONTAL_WRAP JList.HORIZONTAL_WRAP - * VERTICAL_WRAP JList.VERTICAL_WRAP */ + @BeanProperty(visualUpdate = true, enumerationValues = { + "JList.VERTICAL", + "JList.HORIZONTAL_WRAP", + "JList.VERTICAL_WRAP"}, description + = "Defines the way list cells are layed out.") public void setLayoutOrientation(int layoutOrientation) { int oldValue = this.layoutOrientation; switch (layoutOrientation) { @@ -1034,6 +1012,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #getLastVisibleIndex * @see JComponent#getVisibleRect */ + @BeanProperty(bound = false) public int getFirstVisibleIndex() { Rectangle r = getVisibleRect(); int first; @@ -1064,6 +1043,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #getFirstVisibleIndex * @see JComponent#getVisibleRect */ + @BeanProperty(bound = false) public int getLastVisibleIndex() { boolean leftToRight = this.getComponentOrientation().isLeftToRight(); Rectangle r = getVisibleRect(); @@ -1180,11 +1160,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #setTransferHandler * @see TransferHandler * @since 1.4 - * - * @beaninfo - * description: determines whether automatic drag handling is enabled - * bound: false */ + @BeanProperty(bound = false, description + = "determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) { if (b && GraphicsEnvironment.isHeadless()) { throw new HeadlessException(); @@ -1449,6 +1427,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see TransferHandler#canImport(TransferHandler.TransferSupport) * @since 1.6 */ + @BeanProperty(bound = false) public final DropLocation getDropLocation() { return dropLocation; } @@ -1664,11 +1643,9 @@ public class JList extends JComponent implements Scrollable, Accessible * null * @see #getModel * @see #clearSelection - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The object that contains the data to be drawn by this JList. */ + @BeanProperty(visualUpdate = true, description + = "The object that contains the data to be drawn by this JList.") public void setModel(ListModel model) { if (model == null) { throw new IllegalArgumentException("model must be non null"); @@ -1860,6 +1837,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #addListSelectionListener * @since 1.4 */ + @BeanProperty(bound = false) public ListSelectionListener[] getListSelectionListeners() { return listenerList.getListeners(ListSelectionListener.class); } @@ -1879,10 +1857,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @exception IllegalArgumentException if selectionModel * is null * @see #getSelectionModel - * @beaninfo - * bound: true - * description: The selection model, recording which cells are selected. */ + @BeanProperty(description + = "The selection model, recording which cells are selected.") public void setSelectionModel(ListSelectionModel selectionModel) { if (selectionModel == null) { throw new IllegalArgumentException("selectionModel must be non null"); @@ -1928,12 +1905,12 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #getSelectionMode * @throws IllegalArgumentException if the selection mode isn't * one of those allowed - * @beaninfo - * description: The selection mode. - * enum: SINGLE_SELECTION ListSelectionModel.SINGLE_SELECTION - * SINGLE_INTERVAL_SELECTION ListSelectionModel.SINGLE_INTERVAL_SELECTION - * MULTIPLE_INTERVAL_SELECTION ListSelectionModel.MULTIPLE_INTERVAL_SELECTION */ + @BeanProperty(bound = false, enumerationValues = { + "ListSelectionModel.SINGLE_SELECTION", + "ListSelectionModel.SINGLE_INTERVAL_SELECTION", + "ListSelectionModel.MULTIPLE_INTERVAL_SELECTION"}, description + = "The selection mode.") public void setSelectionMode(int selectionMode) { getSelectionModel().setSelectionMode(selectionMode); } @@ -1958,6 +1935,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @return the anchor selection index * @see ListSelectionModel#getAnchorSelectionIndex */ + @BeanProperty(bound = false) public int getAnchorSelectionIndex() { return getSelectionModel().getAnchorSelectionIndex(); } @@ -1969,9 +1947,9 @@ public class JList extends JComponent implements Scrollable, Accessible * * @return the lead selection index * @see ListSelectionModel#getLeadSelectionIndex - * @beaninfo - * description: The lead selection index. */ + @BeanProperty(bound = false, description + = "The lead selection index.") public int getLeadSelectionIndex() { return getSelectionModel().getLeadSelectionIndex(); } @@ -1985,6 +1963,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @return the smallest selected cell index, or {@code -1} * @see ListSelectionModel#getMinSelectionIndex */ + @BeanProperty(bound = false) public int getMinSelectionIndex() { return getSelectionModel().getMinSelectionIndex(); } @@ -1998,6 +1977,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @return the largest selected cell index * @see ListSelectionModel#getMaxSelectionIndex */ + @BeanProperty(bound = false) public int getMaxSelectionIndex() { return getSelectionModel().getMaxSelectionIndex(); } @@ -2028,6 +2008,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see ListSelectionModel#isSelectionEmpty * @see #clearSelection */ + @BeanProperty(bound = false) public boolean isSelectionEmpty() { return getSelectionModel().isSelectionEmpty(); } @@ -2202,9 +2183,9 @@ public class JList extends JComponent implements Scrollable, Accessible * @see ListSelectionModel#setSelectionInterval * @see #isSelectedIndex * @see #addListSelectionListener - * @beaninfo - * description: The index of the selected cell. */ + @BeanProperty(bound = false, description + = "The index of the selected cell.") public void setSelectedIndex(int index) { if (index >= getModel().getSize()) { return; @@ -2252,6 +2233,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @deprecated As of JDK 1.7, replaced by {@link #getSelectedValuesList()} */ @Deprecated + @BeanProperty(bound = false) public Object[] getSelectedValues() { ListSelectionModel sm = getSelectionModel(); ListModel dm = getModel(); @@ -2286,6 +2268,7 @@ public class JList extends JComponent implements Scrollable, Accessible * * @since 1.7 */ + @BeanProperty(bound = false) public List getSelectedValuesList() { ListSelectionModel sm = getSelectionModel(); ListModel dm = getModel(); @@ -2338,6 +2321,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #getModel * @see #addListSelectionListener */ + @BeanProperty(bound = false) public E getSelectedValue() { int i = getMinSelectionIndex(); return (i == -1) ? null : getModel().getElementAt(i); @@ -2427,6 +2411,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @see #getPreferredScrollableViewportSize * @see #setPrototypeCellValue */ + @BeanProperty(bound = false) public Dimension getPreferredScrollableViewportSize() { if (getLayoutOrientation() != VERTICAL) { @@ -2764,6 +2749,7 @@ public class JList extends JComponent implements Scrollable, Accessible * width to match its own * @see Scrollable#getScrollableTracksViewportWidth */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { if (getLayoutOrientation() == HORIZONTAL_WRAP && getVisibleRowCount() <= 0) { @@ -2790,6 +2776,7 @@ public class JList extends JComponent implements Scrollable, Accessible * height to match its own * @see Scrollable#getScrollableTracksViewportHeight */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportHeight() { if (getLayoutOrientation() == VERTICAL_WRAP && getVisibleRowCount() <= 0) { @@ -2861,6 +2848,7 @@ public class JList extends JComponent implements Scrollable, Accessible * @return an {@code AccessibleJList} that serves as the * {@code AccessibleContext} of this {@code JList} */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJList(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JMenu.java b/jdk/src/java.desktop/share/classes/javax/swing/JMenu.java index 47834d02d58..c9a279a5ed0 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JMenu.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JMenu.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,41 +22,34 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; -import java.awt.AWTEvent; import java.awt.Component; import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; -import java.awt.Frame; -import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Point; -import java.awt.Polygon; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeListener; import java.util.*; import java.io.Serializable; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import javax.swing.event.*; import javax.swing.plaf.*; -import javax.swing.plaf.basic.*; import javax.accessibility.*; -import java.lang.ref.WeakReference; - /** * An implementation of a menu -- a popup window containing * JMenuItems that @@ -97,10 +90,6 @@ import java.lang.ref.WeakReference; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer true - * description: A popup window containing menu items displayed in a menu bar. - * * @author Georges Saab * @author David Karlton * @author Arnaud Weber @@ -110,6 +99,8 @@ import java.lang.ref.WeakReference; * @see JPopupMenu * @since 1.2 */ +@JavaBean(description = "A popup window containing menu items displayed in a menu bar.") +@SwingContainer @SuppressWarnings("serial") public class JMenu extends JMenuItem implements Accessible,MenuElement { @@ -232,6 +223,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -247,11 +239,6 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @param newModel the ButtonModel * @see #getModel - * @beaninfo - * description: The menu's model - * bound: true - * expert: true - * hidden: true */ public void setModel(ButtonModel newModel) { ButtonModel oldModel = getModel(); @@ -285,11 +272,9 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @param b true to select (highlight) the menu; false to de-select * the menu - * @beaninfo - * description: When the menu is selected, its popup child is shown. - * expert: true - * hidden: true */ + @BeanProperty(expert = true, hidden = true, description + = "When the menu is selected, its popup child is shown.") public void setSelected(boolean b) { ButtonModel model = getModel(); boolean oldValue = model.isSelected(); @@ -323,11 +308,9 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @param b a boolean value -- true to make the menu visible, * false to hide it - * @beaninfo - * description: The popup menu's visibility - * expert: true - * hidden: true */ + @BeanProperty(bound = false, expert = true, hidden = true, description + = "The popup menu's visibility") public void setPopupMenuVisible(boolean b) { if (DEBUG) { System.out.println("in JMenu.setPopupMenuVisible " + b); @@ -517,10 +500,9 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @param d the number of milliseconds to delay * @exception IllegalArgumentException if d * is less than 0 - * @beaninfo - * description: The delay between menu selection and making the popup menu visible - * expert: true */ + @BeanProperty(bound = false, expert = true, description + = "The delay between menu selection and making the popup menu visible") public void setDelay(int d) { if (d < 0) throw new IllegalArgumentException("Delay must be a positive integer"); @@ -788,6 +770,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @return an integer equal to the number of items on the menu * @see #getMenuComponentCount */ + @BeanProperty(bound = false) public int getItemCount() { return getMenuComponentCount(); } @@ -799,6 +782,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @return true if the menu can be torn off, else false * @exception Error if invoked -- this method is not yet implemented */ + @BeanProperty(bound = false) public boolean isTearOff() { throw new Error("boolean isTearOff() {} not yet implemented"); } @@ -856,6 +840,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @return an integer containing the number of components on the menu */ + @BeanProperty(bound = false) public int getMenuComponentCount() { int componentCount = 0; if (popupMenu != null) @@ -886,6 +871,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @return an array of Components or an empty array * if there is no popup menu */ + @BeanProperty(bound = false) public Component[] getMenuComponents() { if (popupMenu != null) return popupMenu.getComponents(); @@ -901,6 +887,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * false if the menu is activated from a menu item * on another menu */ + @BeanProperty(bound = false) public boolean isTopLevelMenu() { return getParent() instanceof JMenuBar; @@ -985,6 +972,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @return the {@code JPopupMenu} associated with this menu */ + @BeanProperty(bound = false) public JPopupMenu getPopupMenu() { ensurePopupMenuCreated(); return popupMenu; @@ -1016,6 +1004,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public MenuListener[] getMenuListeners() { return listenerList.getListeners(MenuListener.class); } @@ -1208,6 +1197,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @return an array of MenuElement objects */ + @BeanProperty(bound = false) public MenuElement[] getSubElements() { if(popupMenu == null) return new MenuElement[0]; @@ -1270,11 +1260,6 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * without navigating the menu hierarchy * @exception Error if invoked -- this method is not defined for JMenu. * Use setMnemonic instead - * - * @beaninfo - * description: The keystroke combination which will invoke the JMenuItem's - * actionlisteners without navigating the menu hierarchy - * hidden: true */ public void setAccelerator(KeyStroke keyStroke) { throw new Error("setAccelerator() is not defined for JMenu. Use setMnemonic() instead."); @@ -1381,6 +1366,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @return an AccessibleJMenu that serves as the * AccessibleContext of this JMenu */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJMenu(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JMenuBar.java b/jdk/src/java.desktop/share/classes/javax/swing/JMenuBar.java index c8fcb6673c6..979d2b8a3d7 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JMenuBar.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JMenuBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,27 +22,22 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.Component; -import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; -import java.awt.Point; -import java.awt.Rectangle; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.Transient; import java.util.Vector; -import java.util.Enumeration; import java.io.Serializable; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.IOException; -import javax.swing.event.*; -import javax.swing.border.Border; import javax.swing.plaf.*; import javax.accessibility.*; @@ -78,9 +73,6 @@ import javax.accessibility.*; * of JMenuBar is set to false. To resolve this, * you should call the JMenuBar.setFocusTraversalKeysEnabled(true) * method. - * @beaninfo - * attribute: isContainer true - * description: A container for holding and displaying menus. * * @author Georges Saab * @author David Karlton @@ -90,6 +82,8 @@ import javax.accessibility.*; * @see JMenuItem * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A container for holding and displaying menus.") +@SwingContainer @SuppressWarnings("serial") public class JMenuBar extends JComponent implements Accessible,MenuElement { @@ -137,12 +131,9 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * * @param ui the new MenuBarUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(MenuBarUI ui) { super.setUI(ui); } @@ -164,6 +155,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -184,10 +176,8 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * * @param model the SingleSelectionModel to use * @see SingleSelectionModel - * @beaninfo - * bound: true - * description: The selection model, recording which child is selected. */ + @BeanProperty(description = "The selection model, recording which child is selected.") public void setSelectionModel(SingleSelectionModel model) { SingleSelectionModel oldValue = selectionModel; this.selectionModel = model; @@ -227,6 +217,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * * @return the number of items in the menu bar */ + @BeanProperty(bound = false) public int getMenuCount() { return getComponentCount(); } @@ -304,6 +295,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * * @return true if a selection has been made, else false */ + @BeanProperty(bound = false) public boolean isSelected() { return selectionModel.isSelected(); } @@ -323,11 +315,9 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * @param b if true and border property is not null, * the border is painted. * @see #isBorderPainted - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the border should be painted. */ + @BeanProperty(visualUpdate = true, description + = "Whether the border should be painted.") public void setBorderPainted(boolean b) { boolean oldValue = paintBorder; paintBorder = b; @@ -359,11 +349,9 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * * @param m an Insets object containing the margin values * @see Insets - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The space between the menubar's border and its contents */ + @BeanProperty(visualUpdate = true, description + = "The space between the menubar's border and its contents") public void setMargin(Insets m) { Insets old = margin; this.margin = m; @@ -423,6 +411,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * other menu elements. * @return an array of menu items in the menu bar. */ + @BeanProperty(bound = false) public MenuElement[] getSubElements() { MenuElement result[]; Vector tmp = new Vector(); @@ -487,6 +476,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement * @return an AccessibleJMenuBar that serves as the * AccessibleContext of this JMenuBar */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJMenuBar(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JMenuItem.java b/jdk/src/java.desktop/share/classes/javax/swing/JMenuItem.java index 7af01881951..cf80c9827a9 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JMenuItem.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,13 +24,11 @@ */ package javax.swing; -import java.util.EventListener; import java.awt.*; import java.awt.event.*; -import java.awt.image.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.Serializable; import java.io.ObjectOutputStream; @@ -38,7 +36,6 @@ import java.io.ObjectInputStream; import java.io.IOException; import javax.swing.plaf.*; -import javax.swing.plaf.basic.*; import javax.swing.event.*; import javax.accessibility.*; @@ -76,10 +73,6 @@ import javax.accessibility.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: An item which can be selected in a menu. - * * @author Georges Saab * @author David Karlton * @see JPopupMenu @@ -88,6 +81,8 @@ import javax.accessibility.*; * @see JRadioButtonMenuItem * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "An item which can be selected in a menu.") +@SwingContainer(false) @SuppressWarnings("serial") public class JMenuItem extends AbstractButton implements Accessible,MenuElement { @@ -232,12 +227,9 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * * @param ui the JMenuItemUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the LookAndFeel.") public void setUI(MenuItemUI ui) { super.setUI(ui); } @@ -260,6 +252,7 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -272,10 +265,9 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * event will not fire and the menu item will be disarmed. * * @param b true to arm the menu item so it can be selected - * @beaninfo - * description: Mouse release will fire an action event - * hidden: true */ + @BeanProperty(bound = false, hidden = true, description + = "Mouse release will fire an action event") public void setArmed(boolean b) { ButtonModel model = getModel(); @@ -300,11 +292,9 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * Enables or disables the menu item. * * @param b true to enable the item - * @beaninfo - * description: Does the component react to user interaction - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "The enabled state of the component.") public void setEnabled(boolean b) { // Make sure we aren't armed! if (!b && !UIManager.getBoolean("MenuItem.disabledAreNavigable")) { @@ -344,13 +334,9 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * * @param keyStroke the KeyStroke which will * serve as an accelerator - * @beaninfo - * description: The keystroke combination which will invoke the - * JMenuItem's actionlisteners without navigating the - * menu hierarchy - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "The keystroke combination which will invoke the JMenuItem's actionlisteners without navigating the menu hierarchy") public void setAccelerator(KeyStroke keyStroke) { KeyStroke oldAccelerator = accelerator; this.accelerator = keyStroke; @@ -681,6 +667,7 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * * @return an array of MenuElements */ + @BeanProperty(bound = false) public MenuElement[] getSubElements() { return new MenuElement[0]; } @@ -722,6 +709,7 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public MenuDragMouseListener[] getMenuDragMouseListeners() { return listenerList.getListeners(MenuDragMouseListener.class); } @@ -752,6 +740,7 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public MenuKeyListener[] getMenuKeyListeners() { return listenerList.getListeners(MenuKeyListener.class); } @@ -808,6 +797,7 @@ public class JMenuItem extends AbstractButton implements Accessible,MenuElement * @return an AccessibleJMenuItem that serves as the * AccessibleContext of this JMenuItem */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJMenuItem(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JOptionPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JOptionPane.java index 491fddee12f..77eb97e9e03 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JOptionPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JOptionPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.BorderLayout; @@ -35,6 +34,8 @@ import java.awt.Frame; import java.awt.Point; import java.awt.HeadlessException; import java.awt.Window; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.awt.event.WindowListener; @@ -301,14 +302,12 @@ import sun.awt.AWTAccessor; * * @see JInternalFrame * - * @beaninfo - * attribute: isContainer true - * description: A component which implements standard dialog box controls. - * * @author James Gosling * @author Scott Violet * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component which implements standard dialog box controls.") +@SwingContainer @SuppressWarnings("serial") // Same-version serialization only public class JOptionPane extends JComponent implements Accessible { @@ -1828,11 +1827,9 @@ public class JOptionPane extends JComponent implements Accessible * * @param ui the OptionPaneUI {@literal L&F} object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * description: The UI object that implements the optionpane's LookAndFeel */ + @BeanProperty(hidden = true, description + = "The UI object that implements the optionpane's LookAndFeel") public void setUI(OptionPaneUI ui) { if (this.ui != ui) { super.setUI(ui); @@ -1869,6 +1866,7 @@ public class JOptionPane extends JComponent implements Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -1878,12 +1876,9 @@ public class JOptionPane extends JComponent implements Accessible * Sets the option pane's message-object. * @param newMessage the Object to display * @see #getMessage - * - * @beaninfo - * preferred: true - * bound: true - * description: The optionpane's message object. */ + @BeanProperty(preferred = true, description + = "The optionpane's message object.") public void setMessage(Object newMessage) { Object oldMessage = message; @@ -1907,11 +1902,9 @@ public class JOptionPane extends JComponent implements Accessible * @param newIcon the Icon to display * * @see #getIcon - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's type icon. */ + @BeanProperty(preferred = true, description + = "The option pane's type icon.") public void setIcon(Icon newIcon) { Object oldIcon = icon; @@ -1934,11 +1927,9 @@ public class JOptionPane extends JComponent implements Accessible * @param newValue the chosen value * * @see #getValue - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's value object. */ + @BeanProperty(preferred = true, description + = "The option pane's value object.") public void setValue(Object newValue) { Object oldValue = value; @@ -1975,10 +1966,9 @@ public class JOptionPane extends JComponent implements Accessible * Components to add to the pane * * @see #getOptions - * @beaninfo - * bound: true - * description: The option pane's options objects. */ + @BeanProperty(description + = "The option pane's options objects.") public void setOptions(Object[] newOptions) { Object[] oldOptions = options; @@ -2012,11 +2002,9 @@ public class JOptionPane extends JComponent implements Accessible * keyboard focus * * @see #getInitialValue - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's initial value object. */ + @BeanProperty(preferred = true, description + = "The option pane's initial value object.") public void setInitialValue(Object newInitialValue) { Object oldIV = initialValue; @@ -2048,11 +2036,9 @@ public class JOptionPane extends JComponent implements Accessible * legal values listed above * @see #getMessageType - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's message type. */ + @BeanProperty(preferred = true, description + = "The option pane's message type.") public void setMessageType(int newType) { checkMessageType(newType); int oldType = messageType; @@ -2097,11 +2083,9 @@ public class JOptionPane extends JComponent implements Accessible * * @see #getOptionType * @see #setOptions - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's option type. */ + @BeanProperty(preferred = true, description + = "The option pane's option type.") public void setOptionType(int newType) { checkOptionType(newType); int oldType = optionType; @@ -2149,10 +2133,9 @@ public class JOptionPane extends JComponent implements Accessible * @see #setWantsInput * @see #setInitialSelectionValue * @see #getSelectionValues - * @beaninfo - * bound: true - * description: The option pane's selection values. */ + @BeanProperty(description + = "The option pane's selection values.") public void setSelectionValues(Object[] newValues) { Object[] oldValues = selectionValues; @@ -2178,10 +2161,9 @@ public class JOptionPane extends JComponent implements Accessible * @param newValue the initially selected value * @see #setSelectionValues * @see #getInitialSelectionValue - * @beaninfo - * bound: true - * description: The option pane's initial selection value object. */ + @BeanProperty(description + = "The option pane's initial selection value object.") public void setInitialSelectionValue(Object newValue) { Object oldValue = initialSelectionValue; @@ -2215,11 +2197,9 @@ public class JOptionPane extends JComponent implements Accessible * @see #setInitialSelectionValue * @see #setWantsInput * @see #getInputValue - * @beaninfo - * preferred: true - * bound: true - * description: The option pane's input value object. */ + @BeanProperty(preferred = true, description + = "The option pane's input value object.") public void setInputValue(Object newValue) { Object oldValue = inputValue; @@ -2251,6 +2231,7 @@ public class JOptionPane extends JComponent implements Accessible * * @return an integer giving the maximum number of characters on a line */ + @BeanProperty(bound = false) public int getMaxCharactersPerLineCount() { return Integer.MAX_VALUE; } @@ -2271,11 +2252,9 @@ public class JOptionPane extends JComponent implements Accessible * is provided to allow the user to input a value. * @see #setSelectionValues * @see #setInputValue - * @beaninfo - * preferred: true - * bound: true - * description: Flag which allows the user to input a value. */ + @BeanProperty(preferred = true, description + = "Flag which allows the user to input a value.") public void setWantsInput(boolean newValue) { boolean oldValue = wantsInput; @@ -2525,10 +2504,9 @@ public class JOptionPane extends JComponent implements Accessible * * @return an AccessibleJOptionPane that serves as the * AccessibleContext of this AccessibleJOptionPane - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this option pane */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this option pane") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJOptionPane(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JPanel.java b/jdk/src/java.desktop/share/classes/javax/swing/JPanel.java index 293ca2237df..ac0be8dfe9e 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JPanel.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -25,13 +25,13 @@ package javax.swing; import java.awt.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.swing.plaf.*; import javax.accessibility.*; -import java.io.Serializable; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; @@ -56,13 +56,11 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * description: A generic lightweight container. - * * @author Arnaud Weber * @author Steve Wilson * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A generic lightweight container.") @SuppressWarnings("serial") // Same-version serialization only public class JPanel extends JComponent implements Accessible { @@ -145,12 +143,9 @@ public class JPanel extends JComponent implements Accessible * @param ui the PanelUI L&F object * @see UIDefaults#getUI * @since 1.4 - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(PanelUI ui) { super.setUI(ui); } @@ -162,10 +157,9 @@ public class JPanel extends JComponent implements Accessible * @return "PanelUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class.") public String getUIClassID() { return uiClassID; } @@ -213,6 +207,7 @@ public class JPanel extends JComponent implements Accessible * @return an AccessibleJPanel that serves as the * AccessibleContext of this JPanel */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJPanel(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JPasswordField.java b/jdk/src/java.desktop/share/classes/javax/swing/JPasswordField.java index 82b6457e8ec..0094b1adb4c 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JPasswordField.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JPasswordField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -25,13 +25,12 @@ package javax.swing; import javax.swing.text.*; -import javax.swing.plaf.*; import javax.accessibility.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; -import java.io.*; import java.util.Arrays; /** @@ -68,13 +67,11 @@ import java.util.Arrays; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: Allows the editing of a line of text but doesn't show the characters. - * * @author Timothy Prinzing * @since 1.2 */ +@JavaBean(description = "Allows the editing of a line of text but doesn't show the characters.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JPasswordField extends JTextField { @@ -151,6 +148,7 @@ public class JPasswordField extends JTextField { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -191,10 +189,9 @@ public class JPasswordField extends JTextField { * @param c the echo character to display * @see #echoCharIsSet * @see #getEchoChar - * @beaninfo - * description: character to display in place of the real characters - * attribute: visualUpdate true */ + @BeanProperty(bound = false, visualUpdate = true, description + = "character to display in place of the real characters") public void setEchoChar(char c) { echoChar = c; echoCharSet = true; @@ -292,6 +289,7 @@ public class JPasswordField extends JTextField { * * @return the text */ + @BeanProperty(bound = false) public char[] getPassword() { Document doc = getDocument(); Segment txt = new Segment(); @@ -383,6 +381,7 @@ public class JPasswordField extends JTextField { * AccessibleContext of this * JPasswordField */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJPasswordField(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JPopupMenu.java b/jdk/src/java.desktop/share/classes/javax/swing/JPopupMenu.java index 0df8c126308..f225b2d44ee 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JPopupMenu.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JPopupMenu.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.*; @@ -31,21 +30,18 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; -import java.util.Locale; import java.util.Vector; -import java.util.Hashtable; import javax.accessibility.*; import javax.swing.plaf.PopupMenuUI; -import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicComboPopup; import javax.swing.event.*; import sun.awt.SunToolkit; -import sun.security.util.SecurityConstants; - -import java.applet.Applet; /** * An implementation of a popup menu -- a small window that pops up @@ -75,15 +71,13 @@ import java.applet.Applet; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A small window that pops up and displays a series of choices. - * * @author Georges Saab * @author David Karlton * @author Arnaud Weber * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A small window that pops up and displays a series of choices.") +@SwingContainer(false) @SuppressWarnings("serial") public class JPopupMenu extends JComponent implements Accessible,MenuElement { @@ -210,12 +204,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param ui the new PopupMenuUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(PopupMenuUI ui) { super.setUI(ui); } @@ -237,6 +228,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -274,10 +266,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param model the new SingleSelectionModel * @see SingleSelectionModel - * @beaninfo - * description: The selection model for the popup menu - * expert: true */ + @BeanProperty(bound = false, expert = true, description + = "The selection model for the popup menu") public void setSelectionModel(SingleSelectionModel model) { selectionModel = model; } @@ -495,12 +486,11 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * no matter what the value of this property. * * @param aFlag false to disable lightweight popups - * @beaninfo - * description: Determines whether lightweight popups are used when possible - * expert: true * * @see #isLightWeightPopupEnabled */ + @BeanProperty(bound = false, expert = true, description + = "Determines whether lightweight popups are used when possible") public void setLightWeightPopupEnabled(boolean aFlag) { // NOTE: this use to set the flag on a shared JPopupMenu, which meant // this effected ALL JPopupMenus. @@ -534,10 +524,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * @param label a string specifying the label for the popup menu * * @see #setLabel - * @beaninfo - * description: The label for the popup menu. - * bound: true */ + @BeanProperty(description + = "The label for the popup menu.") public void setLabel(String label) { String oldValue = this.label; this.label = label; @@ -637,6 +626,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public PopupMenuListener[] getPopupMenuListeners() { return listenerList.getListeners(PopupMenuListener.class); } @@ -669,6 +659,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * array if no listeners have been added * @since 1.5 */ + @BeanProperty(bound = false) public MenuKeyListener[] getMenuKeyListeners() { return listenerList.getListeners(MenuKeyListener.class); } @@ -753,10 +744,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param b true to make the popup visible, or false to * hide it - * @beaninfo - * bound: true - * description: Makes the popup visible */ + @BeanProperty(description + = "Makes the popup visible") public void setVisible(boolean b) { if (DEBUG) { System.out.println("JPopupMenu.setVisible " + b); @@ -868,9 +858,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * in the screen's coordinate space * @param y the y coordinate of the popup's new position * in the screen's coordinate space - * @beaninfo - * description: The location of the popup menu. */ + @BeanProperty(description + = "The location of the popup menu.") public void setLocation(int x, int y) { int oldX = desiredLocationX; int oldY = desiredLocationY; @@ -908,10 +898,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param invoker the Component in which the popup * menu is displayed - * @beaninfo - * description: The invoking component for the popup menu - * expert: true */ + @BeanProperty(bound = false, expert = true, description + = "The invoking component for the popup menu") public void setInvoker(Component invoker) { Component oldInvoker = this.invoker; this.invoker = invoker; @@ -1024,9 +1013,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param d the Dimension specifying the new size * of this component. - * @beaninfo - * description: The size of the popup menu */ + @BeanProperty(description + = "The size of the popup menu") public void setPopupSize(Dimension d) { Dimension oldSize = getPreferredSize(); @@ -1047,9 +1036,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param width the new width of the Popup in pixels * @param height the new height of the Popup in pixels - * @beaninfo - * description: The size of the popup menu */ + @BeanProperty(description + = "The size of the popup menu") public void setPopupSize(int width, int height) { setPopupSize(new Dimension(width, height)); } @@ -1059,11 +1048,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * in a change to the selection model. * * @param sel the Component to select - * @beaninfo - * description: The selected component on the popup menu - * expert: true - * hidden: true */ + @BeanProperty(expert = true, hidden = true, description + = "The selected component on the popup menu") public void setSelected(Component sel) { SingleSelectionModel model = getSelectionModel(); int index = getComponentIndex(sel); @@ -1085,9 +1072,9 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @param b if true, the border is painted. * @see #isBorderPainted - * @beaninfo - * description: Is the border of the popup menu painted */ + @BeanProperty(bound = false, description + = "Is the border of the popup menu painted") public void setBorderPainted(boolean b) { paintBorder = b; repaint(); @@ -1113,6 +1100,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * * @return an Insets object containing the margin values. */ + @BeanProperty(bound = false) public Insets getMargin() { if(margin == null) { return new Insets(0,0,0,0); @@ -1198,6 +1186,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * @return an AccessibleJPopupMenu that serves as the * AccessibleContext of this JPopupMenu */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJPopupMenu(); @@ -1512,6 +1501,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { * @return an array of MenuElement objects * @see MenuElement#getSubElements */ + @BeanProperty(bound = false) public MenuElement[] getSubElements() { MenuElement result[]; Vector tmp = new Vector(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JProgressBar.java b/jdk/src/java.desktop/share/classes/javax/swing/JProgressBar.java index c823176ca36..3504f2ef16a 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JProgressBar.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JProgressBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,25 +22,23 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; -import java.awt.Color; import java.awt.Graphics; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.text.Format; import java.text.NumberFormat; import java.io.Serializable; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import javax.swing.event.*; import javax.accessibility.*; import javax.swing.plaf.ProgressBarUI; - /** * A component that visually displays the progress of some task. As the task * progresses towards completion, the progress bar displays the @@ -122,14 +120,12 @@ import javax.swing.plaf.ProgressBarUI; * @see javax.swing.BoundedRangeModel * @see javax.swing.SwingWorker * - * @beaninfo - * attribute: isContainer false - * description: A component that displays an integer value. - * * @author Michael C. Albers * @author Kathy Walrath * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that displays an integer value.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JProgressBar extends JComponent implements SwingConstants, Accessible { @@ -394,13 +390,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @exception IllegalArgumentException if newOrientation * is an illegal value * @see #getOrientation - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: Set the progress bar's orientation. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "Set the progress bar's orientation.") public void setOrientation(int newOrientation) { if (orientation != newOrientation) { switch (newOrientation) { @@ -453,11 +445,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @param b true if the progress bar should render a string * @see #isStringPainted * @see #setString - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the progress bar should render a string. */ + @BeanProperty(visualUpdate = true, description + = "Whether the progress bar should render a string.") public void setStringPainted(boolean b) { //PENDING: specify that string not painted when in indeterminate mode? // or just leave that to the L&F? @@ -506,11 +496,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see #getString * @see #setStringPainted * @see #isStringPainted - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Specifies the progress string to paint */ + @BeanProperty(visualUpdate = true, description + = "Specifies the progress string to paint") public void setString(String s){ String oldValue = progressString; progressString = s; @@ -526,6 +514,7 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * * @return the percent complete for this progress bar */ + @BeanProperty(bound = false) public double getPercentComplete() { long span = model.getMaximum() - model.getMinimum(); double currentValue = model.getValue(); @@ -538,8 +527,6 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * * @return the value of the borderPainted property * @see #setBorderPainted - * @beaninfo - * description: Does the progress bar paint its border */ public boolean isBorderPainted() { return paintBorder; @@ -556,11 +543,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * should paint its border; * otherwise, false * @see #isBorderPainted - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Whether the progress bar should paint its border. */ + @BeanProperty(visualUpdate = true, description + = "Whether the progress bar should paint its border.") public void setBorderPainted(boolean b) { boolean oldValue = paintBorder; paintBorder = b; @@ -601,12 +586,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * * @param ui a ProgressBarUI object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(ProgressBarUI ui) { super.setUI(ui); } @@ -628,10 +610,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @return the string "ProgressBarUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the look-and-feel class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the look-and-feel class.") public String getUIClassID() { return uiClassID; } @@ -702,6 +683,7 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ChangeListener[] getChangeListeners() { return listenerList.getListeners(ChangeListener.class); } @@ -752,11 +734,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * and is set to {@code 0}. * * @param newModel the BoundedRangeModel to use - * - * @beaninfo - * expert: true - * description: The data model used by the JProgressBar. */ + @BeanProperty(bound = false, expert = true, description + = "The data model used by the JProgressBar.") public void setModel(BoundedRangeModel newModel) { // PENDING(???) setting the same model to multiple bars is broken; listeners BoundedRangeModel oldModel = getModel(); @@ -841,10 +821,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see #getValue * @see #addChangeListener * @see BoundedRangeModel#setValue - * @beaninfo - * preferred: true - * description: The progress bar's current value. */ + @BeanProperty(bound = false, preferred = true, description + = "The progress bar's current value.") public void setValue(int n) { BoundedRangeModel brm = getModel(); int oldValue = brm.getValue(); @@ -874,10 +853,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see #getMinimum * @see #addChangeListener * @see BoundedRangeModel#setMinimum - * @beaninfo - * preferred: true - * description: The progress bar's minimum value. */ + @BeanProperty(bound = false, preferred = true, description + = "The progress bar's minimum value.") public void setMinimum(int n) { getModel().setMinimum(n); } /** @@ -895,10 +873,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see #getMaximum * @see #addChangeListener * @see BoundedRangeModel#setMaximum - * @beaninfo - * preferred: true - * description: The progress bar's maximum value. */ + @BeanProperty(bound = false, preferred = true, description + = "The progress bar's maximum value.") public void setMaximum(int n) { getModel().setMaximum(n); } /** @@ -925,12 +902,6 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see javax.swing.plaf.basic.BasicProgressBarUI * * @since 1.4 - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Set whether the progress bar is indeterminate (true) - * or normal (false). */ public void setIndeterminate(boolean newValue) { boolean oldValue = indeterminate; @@ -945,11 +916,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * @see #setIndeterminate * * @since 1.4 - * - * @beaninfo - * description: Is the progress bar indeterminate (true) - * or normal (false)? */ + @BeanProperty(bound = false, description + = "Is the progress bar indeterminate (true) or normal (false)?") public boolean isIndeterminate() { return indeterminate; } @@ -1013,10 +982,9 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * * @return an AccessibleJProgressBar that serves as the * AccessibleContext of this JProgressBar - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this ProgressBar. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this ProgressBar.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJProgressBar(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JRadioButton.java b/jdk/src/java.desktop/share/classes/javax/swing/JRadioButton.java index c5eaf6813bd..85c85407390 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JRadioButton.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JRadioButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,18 +24,15 @@ */ package javax.swing; -import java.awt.*; -import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.swing.plaf.*; import javax.accessibility.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - /** * An implementation of a radio button -- an item that can be selected or * deselected, and which displays its state to the user. @@ -78,15 +75,13 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A component which can display it's state as selected or deselected. - * * @see ButtonGroup * @see JCheckBox * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(description = "A component which can display it's state as selected or deselected.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JRadioButton extends JToggleButton implements Accessible { @@ -204,10 +199,9 @@ public class JRadioButton extends JToggleButton implements Accessible { * @return String "RadioButtonUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class.") public String getUIClassID() { return uiClassID; } @@ -263,10 +257,9 @@ public class JRadioButton extends JToggleButton implements Accessible { * * @return an AccessibleJRadioButton that serves as the * AccessibleContext of this JRadioButton - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this Button */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this Button") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJRadioButton(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JRadioButtonMenuItem.java b/jdk/src/java.desktop/share/classes/javax/swing/JRadioButtonMenuItem.java index e1c219b4037..34a6cb7e0e5 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JRadioButtonMenuItem.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JRadioButtonMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,17 +24,11 @@ */ package javax.swing; -import java.util.EventListener; - -import java.awt.*; -import java.awt.event.*; -import java.awt.image.*; - +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; -import javax.swing.plaf.*; import javax.accessibility.*; /** @@ -75,15 +69,13 @@ import javax.accessibility.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A component within a group of menu items which can be selected. - * * @author Georges Saab * @author David Karlton * @see ButtonGroup * @since 1.2 */ +@JavaBean(description = "A component within a group of menu items which can be selected.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JRadioButtonMenuItem extends JMenuItem implements Accessible { /** @@ -191,6 +183,7 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -248,6 +241,7 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible { * @return an AccessibleJRadioButtonMenuItem that serves as the * AccessibleContext of this JRadioButtonMenuItem */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJRadioButtonMenuItem(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JRootPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JRootPane.java index f9dea90da3e..4061f2e2471 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JRootPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JRootPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -34,6 +34,7 @@ import javax.swing.plaf.RootPaneUI; import java.util.Vector; import java.io.Serializable; import javax.swing.border.*; + import sun.awt.AWTAccessor; import sun.security.action.GetBooleanAction; @@ -421,21 +422,18 @@ public class JRootPane extends JComponent implements Accessible { * FILE_CHOOSER_DIALOG, QUESTION_DIALOG, or * WARNING_DIALOG. * @since 1.4 - * @beaninfo - * bound: true - * enum: NONE JRootPane.NONE - * FRAME JRootPane.FRAME - * PLAIN_DIALOG JRootPane.PLAIN_DIALOG - * INFORMATION_DIALOG JRootPane.INFORMATION_DIALOG - * ERROR_DIALOG JRootPane.ERROR_DIALOG - * COLOR_CHOOSER_DIALOG JRootPane.COLOR_CHOOSER_DIALOG - * FILE_CHOOSER_DIALOG JRootPane.FILE_CHOOSER_DIALOG - * QUESTION_DIALOG JRootPane.QUESTION_DIALOG - * WARNING_DIALOG JRootPane.WARNING_DIALOG - * expert: true - * attribute: visualUpdate true - * description: Identifies the type of Window decorations to provide */ + @BeanProperty(expert = true, visualUpdate = true, enumerationValues = { + "JRootPane.NONE", + "JRootPane.FRAME", + "JRootPane.PLAIN_DIALOG", + "JRootPane.INFORMATION_DIALOG", + "JRootPane.ERROR_DIALOG", + "JRootPane.COLOR_CHOOSER_DIALOG", + "JRootPane.FILE_CHOOSER_DIALOG", + "JRootPane.QUESTION_DIALOG", + "JRootPane.WARNING_DIALOG"}, description + = "Identifies the type of Window decorations to provide") public void setWindowDecorationStyle(int windowDecorationStyle) { if (windowDecorationStyle < 0 || windowDecorationStyle > WARNING_DIALOG) { @@ -463,14 +461,10 @@ public class JRootPane extends JComponent implements Accessible { * * @param ui the LabelUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * expert: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. * @since 1.3 */ + @BeanProperty(expert = true, hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(RootPaneUI ui) { super.setUI(ui); } @@ -783,10 +777,9 @@ public class JRootPane extends JComponent implements Accessible { * * @see JButton#isDefaultButton * @param defaultButton the JButton which is to be the default button - * - * @beaninfo - * description: The button activated by default in this root pane */ + @BeanProperty(description + = "The button activated by default in this root pane") public void setDefaultButton(JButton defaultButton) { JButton oldDefault = this.defaultButton; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JScrollBar.java b/jdk/src/java.desktop/share/classes/javax/swing/JScrollBar.java index 0f6b61640e7..39bae157b13 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JScrollBar.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JScrollBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.io.Serializable; @@ -31,18 +30,16 @@ import java.awt.Adjustable; import java.awt.Dimension; import java.awt.event.AdjustmentListener; import java.awt.event.AdjustmentEvent; -import java.awt.Graphics; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.swing.event.*; import javax.swing.plaf.*; import javax.accessibility.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - - /** * An implementation of a scrollbar. The user positions the knob in the * scrollbar to determine the contents of the viewing area. The @@ -72,13 +69,12 @@ import java.io.IOException; * Please see {@link java.beans.XMLEncoder}. * * @see JScrollPane - * @beaninfo - * attribute: isContainer false - * description: A component that helps determine the visible content range of an area. * * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that helps determine the visible content range of an area.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JScrollBar extends JComponent implements Adjustable, Accessible { @@ -207,12 +203,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * @param ui the ScrollBarUI {@literal L&F} object * @see UIDefaults#getUI * @since 1.4 - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel") public void setUI(ScrollBarUI ui) { super.setUI(ui); } @@ -246,6 +239,7 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -271,14 +265,11 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * @param orientation an orientation of the {@code JScrollBar} * @exception IllegalArgumentException if orientation is not one of VERTICAL, HORIZONTAL * @see #getOrientation - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: The scrollbar's orientation. - * enum: VERTICAL JScrollBar.VERTICAL - * HORIZONTAL JScrollBar.HORIZONTAL */ + @BeanProperty(preferred = true, visualUpdate = true, enumerationValues = { + "JScrollBar.VERTICAL", + "JScrollBar.HORIZONTAL"}, description + = "The scrollbar's orientation.") public void setOrientation(int orientation) { checkOrientation(orientation); @@ -319,11 +310,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @param newModel a new model * @see #getModel - * @beaninfo - * bound: true - * expert: true - * description: The scrollbar's BoundedRangeModel. */ + @BeanProperty(expert = true, description + = "The scrollbar's BoundedRangeModel.") public void setModel(BoundedRangeModel newModel) { Integer oldValue = null; BoundedRangeModel oldModel = model; @@ -384,11 +373,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * and ignore this property. * * @see #getUnitIncrement - * @beaninfo - * preferred: true - * bound: true - * description: The scrollbar's unit increment. */ + @BeanProperty(preferred = true, description + = "The scrollbar's unit increment.") public void setUnitIncrement(int unitIncrement) { int oldValue = this.unitIncrement; this.unitIncrement = unitIncrement; @@ -434,11 +421,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * and ignore this property. * * @see #getBlockIncrement() - * @beaninfo - * preferred: true - * bound: true - * description: The scrollbar's block increment. */ + @BeanProperty(preferred = true, description + = "The scrollbar's block increment.") public void setBlockIncrement(int blockIncrement) { int oldValue = this.blockIncrement; this.blockIncrement = blockIncrement; @@ -482,10 +467,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @see #getValue * @see BoundedRangeModel#setValue - * @beaninfo - * preferred: true - * description: The scrollbar's current value. */ + @BeanProperty(bound = false, preferred = true, description + = "The scrollbar's current value.") public void setValue(int value) { BoundedRangeModel m = getModel(); int oldValue = m.getValue(); @@ -518,10 +502,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @see #getVisibleAmount * @see BoundedRangeModel#setExtent - * @beaninfo - * preferred: true - * description: The amount of the view that is currently visible. */ + @BeanProperty(bound = false, preferred = true, description + = "The amount of the view that is currently visible.") public void setVisibleAmount(int extent) { getModel().setExtent(extent); } @@ -544,10 +527,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @see #getMinimum * @see BoundedRangeModel#setMinimum - * @beaninfo - * preferred: true - * description: The scrollbar's minimum value. */ + @BeanProperty(bound = false, preferred = true, description + = "The scrollbar's minimum value.") public void setMinimum(int minimum) { getModel().setMinimum(minimum); } @@ -570,10 +552,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @see #getMaximum * @see BoundedRangeModel#setMaximum - * @beaninfo - * preferred: true - * description: The scrollbar's maximum value. */ + @BeanProperty(bound = false, preferred = true, description + = "The scrollbar's maximum value.") public void setMaximum(int maximum) { getModel().setMaximum(maximum); } @@ -601,10 +582,9 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * * @see #getValueIsAdjusting * @see BoundedRangeModel#setValueIsAdjusting - * @beaninfo - * expert: true - * description: True if the scrollbar thumb is being dragged. */ + @BeanProperty(bound = false, expert = true, description + = "True if the scrollbar thumb is being dragged.") public void setValueIsAdjusting(boolean b) { BoundedRangeModel m = getModel(); boolean oldValue = m.getValueIsAdjusting(); @@ -693,6 +673,7 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public AdjustmentListener[] getAdjustmentListeners() { return listenerList.getListeners(AdjustmentListener.class); } @@ -845,6 +826,7 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * @return an AccessibleJScrollBar that serves as the * AccessibleContext of this JScrollBar */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJScrollBar(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JScrollPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JScrollPane.java index 39700a68429..a51509baec3 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JScrollPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JScrollPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import javax.swing.plaf.*; @@ -40,6 +39,8 @@ import java.awt.Point; import java.io.ObjectOutputStream; import java.io.IOException; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.Transient; @@ -161,14 +162,11 @@ import java.beans.Transient; * @see #setCorner * @see #setViewportBorder * - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getViewport - * description: A specialized container that manages a viewport, optional scrollbars and headers - * * @author Hans Muller * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A specialized container that manages a viewport, optional scrollbars and headers") +@SwingContainer(delegate = "getViewport") @SuppressWarnings("serial") // Same-version serialization only public class JScrollPane extends JComponent implements ScrollPaneConstants, Accessible { @@ -360,12 +358,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @return the ScrollPaneUI object that renders this * component * @see #setUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public ScrollPaneUI getUI() { return (ScrollPaneUI)ui; } @@ -403,10 +398,8 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @return the string "ScrollPaneUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * - * @beaninfo - * hidden: true */ + @BeanProperty(bound = false, hidden = true) public String getUIClassID() { return uiClassID; } @@ -427,9 +420,6 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * ScrollPaneLayout * @see java.awt.Container#getLayout * @see java.awt.Container#setLayout - * - * @beaninfo - * hidden: true */ public void setLayout(LayoutManager layout) { if (layout instanceof ScrollPaneLayout) { @@ -456,11 +446,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @see JComponent#revalidate * @see JComponent#isValidateRoot * @see java.awt.Container#isValidateRoot - * - * @beaninfo - * hidden: true */ @Override + @BeanProperty(hidden = true) public boolean isValidateRoot() { return true; } @@ -489,15 +477,12 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @exception IllegalArgumentException if policy * is not one of the legal values shown above * @see #getVerticalScrollBarPolicy - * - * @beaninfo - * preferred: true - * bound: true - * description: The scrollpane vertical scrollbar policy - * enum: VERTICAL_SCROLLBAR_AS_NEEDED ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED - * VERTICAL_SCROLLBAR_NEVER ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER - * VERTICAL_SCROLLBAR_ALWAYS ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS */ + @BeanProperty(preferred = true, enumerationValues = { + "ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED", + "ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER", + "ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS"}, description + = "The scrollpane vertical scrollbar policy") public void setVerticalScrollBarPolicy(int policy) { switch (policy) { case VERTICAL_SCROLLBAR_AS_NEEDED: @@ -537,15 +522,12 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @exception IllegalArgumentException if policy * is not one of the legal values shown above * @see #getHorizontalScrollBarPolicy - * - * @beaninfo - * preferred: true - * bound: true - * description: The scrollpane scrollbar policy - * enum: HORIZONTAL_SCROLLBAR_AS_NEEDED ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED - * HORIZONTAL_SCROLLBAR_NEVER ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER - * HORIZONTAL_SCROLLBAR_ALWAYS ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS */ + @BeanProperty(preferred = true, enumerationValues = { + "ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED", + "ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER", + "ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS"}, description + = "The scrollpane scrollbar policy") public void setHorizontalScrollBarPolicy(int policy) { switch (policy) { case HORIZONTAL_SCROLLBAR_AS_NEEDED: @@ -587,12 +569,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @param viewportBorder the border to be added * @see #getViewportBorder * @see #setViewport - * - * @beaninfo - * preferred: true - * bound: true - * description: The border around the viewport. */ + @BeanProperty(preferred = true, description + = "The border around the viewport.") public void setViewportBorder(Border viewportBorder) { Border oldValue = this.viewportBorder; this.viewportBorder = viewportBorder; @@ -605,6 +584,7 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * * @return a Rectangle object specifying the viewport border */ + @BeanProperty(bound = false) public Rectangle getViewportBorderBounds() { Rectangle borderR = new Rectangle(getSize()); @@ -840,12 +820,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @param horizontalScrollBar the horizontal scrollbar to be added * @see #createHorizontalScrollBar * @see #getHorizontalScrollBar - * - * @beaninfo - * expert: true - * bound: true - * description: The horizontal scrollbar. */ + @BeanProperty(expert = true, description + = "The horizontal scrollbar.") public void setHorizontalScrollBar(JScrollBar horizontalScrollBar) { JScrollBar old = getHorizontalScrollBar(); this.horizontalScrollBar = horizontalScrollBar; @@ -899,12 +876,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @param verticalScrollBar the new vertical scrollbar to be added * @see #createVerticalScrollBar * @see #getVerticalScrollBar - * - * @beaninfo - * expert: true - * bound: true - * description: The vertical scrollbar. */ + @BeanProperty(expert = true, description + = "The vertical scrollbar.") public void setVerticalScrollBar(JScrollBar verticalScrollBar) { JScrollBar old = getVerticalScrollBar(); this.verticalScrollBar = verticalScrollBar; @@ -959,14 +933,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @see #createViewport * @see #getViewport * @see #setViewportView - * - * @beaninfo - * expert: true - * bound: true - * attribute: visualUpdate true - * description: The viewport child for this scrollpane - * */ + @BeanProperty(expert = true, visualUpdate = true, description + = "The viewport child for this scrollpane") public void setViewport(JViewport viewport) { JViewport old = getViewport(); this.viewport = viewport; @@ -1038,12 +1007,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * is set to null * @see #getRowHeader * @see #setRowHeaderView - * - * @beaninfo - * bound: true - * expert: true - * description: The row header child for this scrollpane */ + @BeanProperty(expert = true, description + = "The row header child for this scrollpane") public void setRowHeader(JViewport rowHeader) { JViewport old = getRowHeader(); this.rowHeader = rowHeader; @@ -1105,12 +1071,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @param columnHeader a {@code JViewport} which is the new column header * @see #getColumnHeader * @see #setColumnHeaderView - * - * @beaninfo - * bound: true - * description: The column header child for this scrollpane - * attribute: visualUpdate true */ + @BeanProperty(visualUpdate = true, description + = "The column header child for this scrollpane") public void setColumnHeader(JViewport columnHeader) { JViewport old = getColumnHeader(); this.columnHeader = columnHeader; @@ -1303,10 +1266,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @return true if mouse wheel scrolling is enabled, false otherwise * @see #setWheelScrollingEnabled * @since 1.4 - * @beaninfo - * bound: true - * description: Flag for enabling/disabling mouse wheel scrolling */ + @BeanProperty(description + = "Flag for enabling/disabling mouse wheel scrolling") public boolean isWheelScrollingEnabled() {return wheelScrollState;} /** @@ -1320,10 +1282,9 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @see java.awt.event.MouseWheelEvent * @see java.awt.event.MouseWheelListener * @since 1.4 - * @beaninfo - * bound: true - * description: Flag for enabling/disabling mouse wheel scrolling */ + @BeanProperty(description + = "Flag for enabling/disabling mouse wheel scrolling") public void setWheelScrollingEnabled(boolean handleWheel) { boolean old = wheelScrollState; wheelScrollState = handleWheel; @@ -1424,6 +1385,7 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @return an AccessibleJScrollPane that serves as the * AccessibleContext of this JScrollPane */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJScrollPane(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JSeparator.java b/jdk/src/java.desktop/share/classes/javax/swing/JSeparator.java index 2614096679b..cb3828a70c4 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JSeparator.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JSeparator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,17 +22,16 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import javax.swing.plaf.*; import javax.accessibility.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - /** * JSeparator provides a general purpose component for * implementing divider lines - most commonly used as a divider @@ -64,14 +63,12 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A divider between menu items. - * * @author Georges Saab * @author Jeff Shapiro * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A divider between menu items.") +@SwingContainer(false) @SuppressWarnings("serial") public class JSeparator extends JComponent implements SwingConstants, Accessible { @@ -122,12 +119,9 @@ public class JSeparator extends JComponent implements SwingConstants, Accessible * * @param ui the SeparatorUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(SeparatorUI ui) { super.setUI(ui); } @@ -149,6 +143,7 @@ public class JSeparator extends JComponent implements SwingConstants, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -196,14 +191,11 @@ public class JSeparator extends JComponent implements SwingConstants, Accessible * * @see SwingConstants * @see #getOrientation - * @beaninfo - * bound: true - * preferred: true - * enum: HORIZONTAL SwingConstants.HORIZONTAL - * VERTICAL SwingConstants.VERTICAL - * attribute: visualUpdate true - * description: The orientation of the separator. */ + @BeanProperty(preferred = true, visualUpdate = true, enumerationValues = { + "SwingConstants.HORIZONTAL", + "SwingConstants.VERTICAL"}, description + = "The orientation of the separator.") public void setOrientation( int orientation ) { if (this.orientation == orientation) { return; @@ -260,6 +252,7 @@ public class JSeparator extends JComponent implements SwingConstants, Accessible * @return an AccessibleJSeparator that serves as the * AccessibleContext of this JSeparator */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJSeparator(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JSlider.java b/jdk/src/java.desktop/share/classes/javax/swing/JSlider.java index 5475d51ffc4..dce14e15bcf 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JSlider.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JSlider.java @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import javax.swing.event.*; @@ -35,8 +34,10 @@ import java.io.IOException; import java.awt.*; import java.util.*; -import java.beans.*; - +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; /** * A component that lets the user graphically select a value by sliding @@ -72,13 +73,11 @@ import java.beans.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A component that supports selecting a integer value from a range. - * * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that supports selecting a integer value from a range.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JSlider extends JComponent implements SwingConstants, Accessible { /** @@ -310,12 +309,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * * @param ui the SliderUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the slider's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the slider's LookAndFeel.") public void setUI(SliderUI ui) { super.setUI(ui); } @@ -343,6 +339,7 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -413,6 +410,7 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ChangeListener[] getChangeListeners() { return listenerList.getListeners(ChangeListener.class); } @@ -468,10 +466,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * * @see #getModel * @see BoundedRangeModel - * @beaninfo - * bound: true - * description: The sliders BoundedRangeModel. */ + @BeanProperty(description + = "The sliders BoundedRangeModel.") public void setModel(BoundedRangeModel newModel) { BoundedRangeModel oldModel = getModel(); @@ -527,10 +524,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #getValue * @see #addChangeListener * @see BoundedRangeModel#setValue - * @beaninfo - * preferred: true - * description: The sliders current value. */ + @BeanProperty(bound = false, preferred = true, description + = "The sliders current value.") public void setValue(int n) { BoundedRangeModel m = getModel(); int oldValue = m.getValue(); @@ -577,11 +573,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #getMinimum * @see #addChangeListener * @see BoundedRangeModel#setMinimum - * @beaninfo - * bound: true - * preferred: true - * description: The sliders minimum value. */ + @BeanProperty(preferred = true, description + = "The sliders minimum value.") public void setMinimum(int minimum) { int oldMin = getModel().getMinimum(); getModel().setMinimum(minimum); @@ -618,11 +612,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #getMaximum * @see #addChangeListener * @see BoundedRangeModel#setMaximum - * @beaninfo - * bound: true - * preferred: true - * description: The sliders maximum value. */ + @BeanProperty(preferred = true, description + = "The sliders maximum value.") public void setMaximum(int maximum) { int oldMax = getModel().getMaximum(); getModel().setMaximum(maximum); @@ -651,10 +643,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @param b the new value for the {@code valueIsAdjusting} property * @see #getValueIsAdjusting * @see BoundedRangeModel#setValueIsAdjusting - * @beaninfo - * expert: true - * description: True if the slider knob is being dragged. */ + @BeanProperty(bound = false, expert = true, description + = "True if the slider knob is being dragged.") public void setValueIsAdjusting(boolean b) { BoundedRangeModel m = getModel(); boolean oldValue = m.getValueIsAdjusting(); @@ -699,10 +690,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @param extent the new extent * @see #getExtent * @see BoundedRangeModel#setExtent - * @beaninfo - * expert: true - * description: Size of the range covered by the knob. */ + @BeanProperty(bound = false, expert = true, description + = "Size of the range covered by the knob.") public void setExtent(int extent) { getModel().setExtent(extent); } @@ -726,15 +716,11 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @param orientation {@code HORIZONTAL} or {@code VERTICAL} * @throws IllegalArgumentException if orientation is not one of {@code VERTICAL}, {@code HORIZONTAL} * @see #getOrientation - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * description: Set the scrollbars orientation to either VERTICAL or HORIZONTAL. - * enum: VERTICAL JSlider.VERTICAL - * HORIZONTAL JSlider.HORIZONTAL - * */ + @BeanProperty(preferred = true, visualUpdate = true, enumerationValues = { + "JSlider.VERTICAL", + "JSlider.HORIZONTAL"}, description + = "Set the scrollbars orientation to either VERTICAL or HORIZONTAL.") public void setOrientation(int orientation) { checkOrientation(orientation); @@ -828,12 +814,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #createStandardLabels(int) * @see #getLabelTable * @see #setPaintLabels - * @beaninfo - * hidden: true - * bound: true - * attribute: visualUpdate true - * description: Specifies what labels will be drawn for any given value. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "Specifies what labels will be drawn for any given value.") @SuppressWarnings("rawtypes") public void setLabelTable( Dictionary labels ) { Dictionary oldTable = labelTable; @@ -1062,12 +1045,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * By default, the value of this property is {@code false}. * * @param b true to reverse the slider values from their normal order - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true reverses the slider values from their normal order - * */ + @BeanProperty(visualUpdate = true, description + = "If true reverses the slider values from their normal order") public void setInverted( boolean b ) { boolean oldValue = isInverted; isInverted = b; @@ -1118,12 +1098,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #setPaintTicks * @see #setLabelTable * @see #createStandardLabels(int) - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Sets the number of values between major tick marks. - * */ + @BeanProperty(visualUpdate = true, description + = "Sets the number of values between major tick marks.") public void setMajorTickSpacing(int n) { int oldValue = majorTickSpacing; majorTickSpacing = n; @@ -1166,11 +1143,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @param n new value for the {@code minorTickSpacing} property * @see #getMinorTickSpacing * @see #setPaintTicks - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Sets the number of values between minor tick marks. */ + @BeanProperty(visualUpdate = true, description + = "Sets the number of values between minor tick marks.") public void setMinorTickSpacing(int n) { int oldValue = minorTickSpacing; minorTickSpacing = n; @@ -1215,10 +1190,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * * @param b true to snap the knob to the nearest tick mark * @see #getSnapToTicks - * @beaninfo - * bound: true - * description: If true snap the knob to the nearest tick mark. */ + @BeanProperty(description + = "If true snap the knob to the nearest tick mark.") public void setSnapToTicks(boolean b) { boolean oldValue = snapToTicks; snapToTicks = b; @@ -1236,10 +1210,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @param b true to snap the knob to the nearest slider value * @see #getSnapToValue * @see #setSnapToTicks - * @beaninfo - * bound: true - * description: If true snap the knob to the nearest slider value. */ + @BeanProperty(description + = "If true snap the knob to the nearest slider value.") void setSnapToValue(boolean b) { boolean oldValue = snapToValue; snapToValue = b; @@ -1263,11 +1236,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * * @param b whether or not tick marks should be painted * @see #getPaintTicks - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true tick marks are painted on the slider. */ + @BeanProperty(visualUpdate = true, description + = "If true tick marks are painted on the slider.") public void setPaintTicks(boolean b) { boolean oldValue = paintTicks; paintTicks = b; @@ -1294,11 +1265,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * * @param b whether or not to paint the slider track * @see #getPaintTrack - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true, the track is painted on the slider. */ + @BeanProperty(visualUpdate = true, description + = "If true, the track is painted on the slider.") public void setPaintTrack(boolean b) { boolean oldValue = paintTrack; paintTrack = b; @@ -1336,11 +1305,9 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @see #getPaintLabels * @see #getLabelTable * @see #createStandardLabels(int) - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true labels are painted on the slider. */ + @BeanProperty(visualUpdate = true, description + = "If true labels are painted on the slider.") public void setPaintLabels(boolean b) { boolean oldValue = paintLabels; paintLabels = b; @@ -1422,6 +1389,7 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * @return an AccessibleJSlider that serves as the * AccessibleContext of this JSlider */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJSlider(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java b/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java index 42b1dc39b3b..b9a26cf4b40 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java @@ -108,11 +108,6 @@ import sun.util.locale.provider.LocaleResources; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A single line input field that lets the user select a - * number or an object value from an ordered set. - * * @see SpinnerModel * @see AbstractSpinnerModel * @see SpinnerListModel @@ -124,6 +119,8 @@ import sun.util.locale.provider.LocaleResources; * @author Lynn Monsanto (accessibility) * @since 1.4 */ +@JavaBean(defaultProperty = "UI", description = "A single line input field that lets the user select a number or an object value from an ordered set.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JSpinner extends JComponent implements Accessible { @@ -199,6 +196,7 @@ public class JSpinner extends JComponent implements Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -273,12 +271,9 @@ public class JSpinner extends JComponent implements Accessible * @see #getEditor * @see #setEditor * @throws IllegalArgumentException if model is null - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Model that represents the value of this spinner. */ + @BeanProperty(visualUpdate = true, description + = "Model that represents the value of this spinner.") public void setModel(SpinnerModel model) { if (model == null) { throw new IllegalArgumentException("null model"); @@ -376,6 +371,7 @@ public class JSpinner extends JComponent implements Accessible * @see #getPreviousValue * @see SpinnerModel#getNextValue */ + @BeanProperty(bound = false) public Object getNextValue() { return getModel().getNextValue(); } @@ -436,6 +432,7 @@ public class JSpinner extends JComponent implements Accessible * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public ChangeListener[] getChangeListeners() { return listenerList.getListeners(ChangeListener.class); } @@ -484,6 +481,7 @@ public class JSpinner extends JComponent implements Accessible * @see #getNextValue * @see SpinnerModel#getPreviousValue */ + @BeanProperty(bound = false) public Object getPreviousValue() { return getModel().getPreviousValue(); } @@ -502,12 +500,9 @@ public class JSpinner extends JComponent implements Accessible * @see #createEditor * @see #getModel * @throws IllegalArgumentException if editor is null - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: JComponent that displays the current value of the model */ + @BeanProperty(visualUpdate = true, description + = "JComponent that displays the current value of the model") public void setEditor(JComponent editor) { if (editor == null) { throw new IllegalArgumentException("null editor"); @@ -1427,6 +1422,7 @@ public class JSpinner extends JComponent implements Accessible * @return the AccessibleContext for the JSpinner * @since 1.5 */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJSpinner(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JSplitPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JSplitPane.java index 4b490b76cc4..8c38fa2df59 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JSplitPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JSplitPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -23,12 +23,10 @@ * questions. */ - - package javax.swing; - - +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.ConstructorProperties; import javax.swing.plaf.*; import javax.accessibility.*; @@ -36,11 +34,8 @@ import javax.accessibility.*; import java.awt.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - - /** * JSplitPane is used to divide two (and only two) * Components. The two Components @@ -99,6 +94,7 @@ import java.io.IOException; * @author Scott Violet * @since 1.2 */ +@JavaBean(defaultProperty = "UI") @SuppressWarnings("serial") // Same-version serialization only public class JSplitPane extends JComponent implements Accessible { @@ -365,11 +361,6 @@ public class JSplitPane extends JComponent implements Accessible * * @param ui the SplitPaneUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ public void setUI(SplitPaneUI ui) { if ((SplitPaneUI)this.ui != ui) { @@ -384,10 +375,9 @@ public class JSplitPane extends JComponent implements Accessible * current look and feel. * * @return the SplitPaneUI object that renders this component - * @beaninfo - * expert: true - * description: The L&F object that renders this component. */ + @BeanProperty(bound = false, expert = true, description + = "The L&F object that renders this component.") public SplitPaneUI getUI() { return (SplitPaneUI)ui; } @@ -412,10 +402,9 @@ public class JSplitPane extends JComponent implements Accessible * @return the string "SplitPaneUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * expert: true - * description: A string that specifies the name of the L&F class. */ + @BeanProperty(bound = false, expert = true, description + = "A string that specifies the name of the L&F class.") public String getUIClassID() { return uiClassID; } @@ -425,10 +414,9 @@ public class JSplitPane extends JComponent implements Accessible * Sets the size of the divider. * * @param newSize an integer giving the size of the divider in pixels - * @beaninfo - * bound: true - * description: The size of the divider. */ + @BeanProperty(description + = "The size of the divider.") public void setDividerSize(int newSize) { int oldSize = dividerSize; @@ -471,10 +459,9 @@ public class JSplitPane extends JComponent implements Accessible * Returns the component to the left (or above) the divider. * * @return the Component displayed in that position - * @beaninfo - * preferred: true - * description: The component to the left (or above) the divider. */ + @BeanProperty(bound = false, preferred = true, description + = "The component to the left (or above) the divider.") public Component getLeftComponent() { return leftComponent; } @@ -484,9 +471,9 @@ public class JSplitPane extends JComponent implements Accessible * Sets the component above, or to the left of the divider. * * @param comp the Component to display in that position - * @beaninfo - * description: The component above, or to the left of the divider. */ + @BeanProperty(bound = false, description + = "The component above, or to the left of the divider.") public void setTopComponent(Component comp) { setLeftComponent(comp); } @@ -506,10 +493,9 @@ public class JSplitPane extends JComponent implements Accessible * Sets the component to the right (or below) the divider. * * @param comp the Component to display in that position - * @beaninfo - * preferred: true - * description: The component to the right (or below) the divider. */ + @BeanProperty(bound = false, preferred = true, description + = "The component to the right (or below) the divider.") public void setRightComponent(Component comp) { if (comp == null) { if (rightComponent != null) { @@ -536,9 +522,9 @@ public class JSplitPane extends JComponent implements Accessible * Sets the component below, or to the right of the divider. * * @param comp the Component to display in that position - * @beaninfo - * description: The component below, or to the right of the divider. */ + @BeanProperty(bound = false, description + = "The component below, or to the right of the divider.") public void setBottomComponent(Component comp) { setRightComponent(comp); } @@ -565,13 +551,11 @@ public class JSplitPane extends JComponent implements Accessible * * @param newValue true to specify that the split pane should provide a * collapse/expand widget - * @beaninfo - * bound: true - * description: UI widget on the divider to quickly - * expand/collapse the divider. * * @see #isOneTouchExpandable */ + @BeanProperty(description + = "UI widget on the divider to quickly expand/collapse the divider.") public void setOneTouchExpandable(boolean newValue) { boolean oldValue = oneTouchExpandable; @@ -600,10 +584,9 @@ public class JSplitPane extends JComponent implements Accessible * @param newLastLocation an integer specifying the last divider location * in pixels, from the left (or upper) edge of the pane to the * left (or upper) edge of the divider - * @beaninfo - * bound: true - * description: The last location the divider was at. */ + @BeanProperty(description + = "The last location the divider was at.") public void setLastDividerLocation(int newLastLocation) { int oldLocation = lastDividerLocation; @@ -635,12 +618,11 @@ public class JSplitPane extends JComponent implements Accessible * @param orientation an integer specifying the orientation * @exception IllegalArgumentException if orientation is not one of: * HORIZONTAL_SPLIT or VERTICAL_SPLIT. - * @beaninfo - * bound: true - * description: The orientation, or how the splitter is divided. - * enum: HORIZONTAL_SPLIT JSplitPane.HORIZONTAL_SPLIT - * VERTICAL_SPLIT JSplitPane.VERTICAL_SPLIT */ + @BeanProperty(enumerationValues = { + "JSplitPane.HORIZONTAL_SPLIT", + "JSplitPane.VERTICAL_SPLIT"}, description + = "The orientation, or how the splitter is divided.") public void setOrientation(int orientation) { if ((orientation != VERTICAL_SPLIT) && (orientation != HORIZONTAL_SPLIT)) { @@ -679,13 +661,10 @@ public class JSplitPane extends JComponent implements Accessible * * @param newContinuousLayout true if the components * should continuously be redrawn as the divider changes position - * @beaninfo - * bound: true - * description: Whether the child components are - * continuously redisplayed and laid out during - * user intervention. * @see #isContinuousLayout */ + @BeanProperty(description + = "Whether the child components are continuously redisplayed and laid out during user intervention.") public void setContinuousLayout(boolean newContinuousLayout) { boolean oldCD = continuousLayout; @@ -718,11 +697,9 @@ public class JSplitPane extends JComponent implements Accessible * @param value as described above * @exception IllegalArgumentException if value is < 0 or > 1 * @since 1.3 - * @beaninfo - * bound: true - * description: Specifies how to distribute extra space when the split pane - * resizes. */ + @BeanProperty(description + = "Specifies how to distribute extra space when the split pane resizes.") public void setResizeWeight(double value) { if (value < 0 || value > 1) { throw new IllegalArgumentException("JSplitPane weight must be between 0 and 1"); @@ -773,9 +750,9 @@ public class JSplitPane extends JComponent implements Accessible * (bottom/right) * @exception IllegalArgumentException if the specified location is < 0 * or > 1.0 - * @beaninfo - * description: The location of the divider. */ + @BeanProperty(description + = "The location of the divider.") public void setDividerLocation(double proportionalLocation) { if (proportionalLocation < 0.0 || proportionalLocation > 1.0) { @@ -802,10 +779,9 @@ public class JSplitPane extends JComponent implements Accessible * * @param location an int specifying a UI-specific value (typically a * pixel count) - * @beaninfo - * bound: true - * description: The location of the divider. */ + @BeanProperty(description + = "The location of the divider.") public void setDividerLocation(int location) { int oldValue = dividerLocation; @@ -846,9 +822,9 @@ public class JSplitPane extends JComponent implements Accessible * @return an integer specifying a UI-specific value for the minimum * location (typically a pixel count); or -1 if the UI is * null - * @beaninfo - * description: The minimum location of the divider from the L&F. */ + @BeanProperty(bound = false, description + = "The minimum location of the divider from the L&F.") public int getMinimumDividerLocation() { SplitPaneUI ui = getUI(); @@ -867,6 +843,7 @@ public class JSplitPane extends JComponent implements Accessible * location (typically a pixel count); or -1 if the UI is * null */ + @BeanProperty(bound = false) public int getMaximumDividerLocation() { SplitPaneUI ui = getUI(); @@ -947,11 +924,9 @@ public class JSplitPane extends JComponent implements Accessible * @return true * @see JComponent#revalidate * @see java.awt.Container#isValidateRoot - * - * @beaninfo - * hidden: true */ @Override + @BeanProperty(hidden = true) public boolean isValidateRoot() { return true; } @@ -1132,10 +1107,9 @@ public class JSplitPane extends JComponent implements Accessible * * @return an AccessibleJSplitPane that serves as the * AccessibleContext of this JSplitPane - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this SplitPane. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this SplitPane.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJSplitPane(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTabbedPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JTabbedPane.java index 7afe712868a..d50e660e413 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTabbedPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTabbedPane.java @@ -22,16 +22,18 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.*; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.Transient; import java.util.*; import javax.swing.event.*; import javax.swing.plaf.*; import javax.accessibility.*; + import sun.swing.SwingUtilities2; import java.io.Serializable; @@ -95,11 +97,6 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer true - * description: A component which provides a tab folder metaphor for - * displaying one component from a set of components. - * * @author Dave Moore * @author Philip Milne * @author Amy Fowler @@ -107,6 +104,8 @@ import java.io.IOException; * @see SingleSelectionModel * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component which provides a tab folder metaphor for displaying one component from a set of components.") +@SwingContainer @SuppressWarnings("serial") // Same-version serialization only public class JTabbedPane extends JComponent implements Serializable, Accessible, SwingConstants { @@ -223,12 +222,9 @@ public class JTabbedPane extends JComponent * * @param ui the new UI object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the tabbedpane's LookAndFeel */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the tabbedpane's LookAndFeel") public void setUI(TabbedPaneUI ui) { super.setUI(ui); // disabled icons are generated by LF so they should be unset here @@ -258,6 +254,7 @@ public class JTabbedPane extends JComponent * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -315,7 +312,8 @@ public class JTabbedPane extends JComponent * array if no listeners have been added * @since 1.4 */ - public ChangeListener[] getChangeListeners() { + @BeanProperty(bound = false) + public ChangeListener[] getChangeListeners() { return listenerList.getListeners(ChangeListener.class); } @@ -437,10 +435,9 @@ public class JTabbedPane extends JComponent * * @param model the model to be used * @see #getModel - * @beaninfo - * bound: true - * description: The tabbedpane's SingleSelectionModel. */ + @BeanProperty(description + = "The tabbedpane's SingleSelectionModel.") public void setModel(SingleSelectionModel model) { SingleSelectionModel oldModel = getModel(); @@ -483,18 +480,13 @@ public class JTabbedPane extends JComponent * @param tabPlacement the placement for the tabs relative to the content * @exception IllegalArgumentException if tab placement value isn't one * of the above valid values - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * enum: TOP JTabbedPane.TOP - * LEFT JTabbedPane.LEFT - * BOTTOM JTabbedPane.BOTTOM - * RIGHT JTabbedPane.RIGHT - * description: The tabbedpane's tab placement. - * */ + @BeanProperty(preferred = true, visualUpdate = true, enumerationValues = { + "JTabbedPane.TOP", + "JTabbedPane.LEFT", + "JTabbedPane.BOTTOM", + "JTabbedPane.RIGHT"}, description + = "The tabbedpane's tab placement.") public void setTabPlacement(int tabPlacement) { checkTabPlacement(tabPlacement); if (this.tabPlacement != tabPlacement) { @@ -546,16 +538,11 @@ public class JTabbedPane extends JComponent * of the above valid values * @see #getTabLayoutPolicy * @since 1.4 - * - * @beaninfo - * preferred: true - * bound: true - * attribute: visualUpdate true - * enum: WRAP_TAB_LAYOUT JTabbedPane.WRAP_TAB_LAYOUT - * SCROLL_TAB_LAYOUT JTabbedPane.SCROLL_TAB_LAYOUT - * description: The tabbedpane's policy for laying out the tabs - * */ + @BeanProperty(preferred = true, visualUpdate = true, enumerationValues = { + "JTabbedPane.WRAP_TAB_LAYOUT", + "JTabbedPane.SCROLL_TAB_LAYOUT"}, description + = "The tabbedpane's policy for laying out the tabs") public void setTabLayoutPolicy(int tabLayoutPolicy) { checkTabLayoutPolicy(tabLayoutPolicy); if (this.tabLayoutPolicy != tabLayoutPolicy) { @@ -600,10 +587,9 @@ public class JTabbedPane extends JComponent * * @see #getSelectedIndex * @see SingleSelectionModel#setSelectedIndex - * @beaninfo - * preferred: true - * description: The tabbedpane's selected tab index. */ + @BeanProperty(bound = false, preferred = true, description + = "The tabbedpane's selected tab index.") public void setSelectedIndex(int index) { if (index != -1) { checkIndex(index); @@ -686,10 +672,9 @@ public class JTabbedPane extends JComponent * @exception IllegalArgumentException if component not found in tabbed * pane * @see #getSelectedComponent - * @beaninfo - * preferred: true - * description: The tabbedpane's selected component. */ + @BeanProperty(bound = false, preferred = true, description + = "The tabbedpane's selected component.") public void setSelectedComponent(Component c) { int index = indexOfComponent(c); if (index != -1) { @@ -1096,6 +1081,7 @@ public class JTabbedPane extends JComponent * * @return an integer specifying the number of tabbed pages */ + @BeanProperty(bound = false) public int getTabCount() { return pages.size(); } @@ -1111,6 +1097,7 @@ public class JTabbedPane extends JComponent * is LEFT or RIGHT, * or 0 if there is no UI set on this tabbedpane */ + @BeanProperty(bound = false) public int getTabRunCount() { if (ui != null) { return ((TabbedPaneUI)ui).getTabRunCount(this); @@ -1329,11 +1316,9 @@ public class JTabbedPane extends JComponent * * @see #getTitleAt * @see #setTabComponentAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The title at the specified tab index. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The title at the specified tab index.") public void setTitleAt(int index, String title) { Page page = pages.get(index); String oldTitle =page.title; @@ -1373,11 +1358,9 @@ public class JTabbedPane extends JComponent * @see #getIconAt * @see #getDisabledIconAt * @see #setTabComponentAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The icon at the specified tab index. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The icon at the specified tab index.") public void setIconAt(int index, Icon icon) { Page page = pages.get(index); Icon oldIcon = page.icon; @@ -1414,11 +1397,9 @@ public class JTabbedPane extends JComponent * {@code (index < 0 || index >= tab count)} * * @see #getDisabledIconAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The disabled icon at the specified tab index. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The disabled icon at the specified tab index.") public void setDisabledIconAt(int index, Icon disabledIcon) { Icon oldIcon = pages.get(index).disabledIcon; pages.get(index).disabledIcon = disabledIcon; @@ -1439,11 +1420,10 @@ public class JTabbedPane extends JComponent * {@code (index < 0 || index >= tab count)} * * @see #getToolTipTextAt - * @beaninfo - * preferred: true - * description: The tooltip text at the specified tab index. * @since 1.3 */ + @BeanProperty(preferred = true, description + = "The tooltip text at the specified tab index.") public void setToolTipTextAt(int index, String toolTipText) { String oldToolTipText = pages.get(index).tip; pages.get(index).tip = toolTipText; @@ -1475,11 +1455,9 @@ public class JTabbedPane extends JComponent * {@code (index < 0 || index >= tab count)} * * @see #getBackgroundAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The background color at the specified tab index. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The background color at the specified tab index.") public void setBackgroundAt(int index, Color background) { Color oldBg = pages.get(index).background; pages.get(index).setBackground(background); @@ -1508,11 +1486,9 @@ public class JTabbedPane extends JComponent * {@code (index < 0 || index >= tab count)} * * @see #getForegroundAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The foreground color at the specified tab index. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The foreground color at the specified tab index.") public void setForegroundAt(int index, Color foreground) { Color oldFg = pages.get(index).foreground; pages.get(index).setForeground(foreground); @@ -1555,10 +1531,9 @@ public class JTabbedPane extends JComponent * {@code (index < 0 || index >= tab count)} * * @see #getComponentAt - * @beaninfo - * attribute: visualUpdate true - * description: The component at the specified tab index. */ + @BeanProperty(visualUpdate = true, description + = "The component at the specified tab index.") @SuppressWarnings("deprecation") public void setComponentAt(int index, Component component) { Page page = pages.get(index); @@ -1635,13 +1610,9 @@ public class JTabbedPane extends JComponent * title , or < -1 * @see #setMnemonicAt(int,int) * @see #getDisplayedMnemonicIndexAt(int) - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the index into the String to draw the keyboard character - * mnemonic at */ + @BeanProperty(visualUpdate = true, description + = "the index into the String to draw the keyboard character mnemonic at") public void setDisplayedMnemonicIndexAt(int tabIndex, int mnemonicIndex) { checkIndex(tabIndex); @@ -1675,13 +1646,9 @@ public class JTabbedPane extends JComponent * of range ({@code tabIndex < 0 || tabIndex >= tab count}) * @see #getMnemonicAt(int) * @see #setDisplayedMnemonicIndexAt(int,int) - * - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: The keyboard mnenmonic, as a KeyEvent VK constant, - * for the specified tab */ + @BeanProperty(visualUpdate = true, description + = "The keyboard mnenmonic, as a KeyEvent VK constant, for the specified tab") public void setMnemonicAt(int tabIndex, int mnemonic) { checkIndex(tabIndex); @@ -1896,6 +1863,7 @@ public class JTabbedPane extends JComponent * @return an AccessibleJTabbedPane that serves as the * AccessibleContext of this JTabbedPane */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTabbedPane(); @@ -2397,12 +2365,10 @@ public class JTabbedPane extends JComponent * added to this JTabbedPane * * @see #getTabComponentAt - * @beaninfo - * preferred: true - * attribute: visualUpdate true - * description: The tab component at the specified tab index. * @since 1.6 */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The tab component at the specified tab index.") public void setTabComponentAt(int index, Component component) { if (component != null && indexOfComponent(component) != -1) { throw new IllegalArgumentException("Component is already added to this JTabbedPane"); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTable.java b/jdk/src/java.desktop/share/classes/javax/swing/JTable.java index 6b83043597e..f00473866a7 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTable.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTable.java @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.util.*; @@ -32,7 +31,10 @@ import java.awt.*; import java.awt.event.*; import java.awt.print.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; @@ -207,11 +209,6 @@ import sun.swing.PrintingStatus; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * - * @beaninfo - * attribute: isContainer false - * description: A component which displays data in a two dimensional grid. - * * @author Philip Milne * @author Shannon Hickey (printing support) * @see javax.swing.table.DefaultTableModel @@ -221,6 +218,8 @@ import sun.swing.PrintingStatus; /* The first versions of the JTable, contained in Swing-0.1 through * Swing-0.4, were written by Alan Chung. */ +@JavaBean(defaultProperty = "UI", description = "A component which displays data in a two dimensional grid.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, @@ -894,10 +893,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param tableHeader new tableHeader * @see #getTableHeader - * @beaninfo - * bound: true - * description: The JTableHeader instance which renders the column headers. */ + @BeanProperty(description + = "The JTableHeader instance which renders the column headers.") public void setTableHeader(JTableHeader tableHeader) { if (this.tableHeader != tableHeader) { JTableHeader old = this.tableHeader; @@ -933,10 +931,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @exception IllegalArgumentException if rowHeight is * less than 1 * @see #getRowHeight - * @beaninfo - * bound: true - * description: The height of the specified row. */ + @BeanProperty(description + = "The height of the specified row.") public void setRowHeight(int rowHeight) { if (rowHeight <= 0) { throw new IllegalArgumentException("New row height less than 1"); @@ -979,11 +976,10 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param rowHeight new row height, in pixels * @exception IllegalArgumentException if rowHeight is * less than 1 - * @beaninfo - * bound: true - * description: The height in pixels of the cells in row * @since 1.3 */ + @BeanProperty(description + = "The height in pixels of the cells in row") public void setRowHeight(int row, int rowHeight) { if (rowHeight <= 0) { throw new IllegalArgumentException("New row height less than 1"); @@ -1010,10 +1006,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param rowMargin the number of pixels between cells in a row * @see #getRowMargin - * @beaninfo - * bound: true - * description: The amount of space between cells. */ + @BeanProperty(description + = "The amount of space between cells.") public void setRowMargin(int rowMargin) { int old = this.rowMargin; this.rowMargin = rowMargin; @@ -1041,10 +1036,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * specifying the new width * and height between cells * @see #getIntercellSpacing - * @beaninfo - * description: The spacing between the cells, - * drawn in the background color of the JTable. */ + @BeanProperty(bound = false, description + = "The spacing between the cells, drawn in the background color of the JTable.") public void setIntercellSpacing(Dimension intercellSpacing) { // Set the rowMargin here and columnMargin in the TableColumnModel setRowMargin(intercellSpacing.height); @@ -1071,10 +1065,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param gridColor the new color of the grid lines * @exception IllegalArgumentException if gridColor is null * @see #getGridColor - * @beaninfo - * bound: true - * description: The grid color. */ + @BeanProperty(description + = "The grid color.") public void setGridColor(Color gridColor) { if (gridColor == null) { throw new IllegalArgumentException("New color is null"); @@ -1108,9 +1101,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @see #setShowVerticalLines * @see #setShowHorizontalLines - * @beaninfo - * description: The color used to draw the grid lines. */ + @BeanProperty(description + = "The color used to draw the grid lines.") public void setShowGrid(boolean showGrid) { setShowHorizontalLines(showGrid); setShowVerticalLines(showGrid); @@ -1127,10 +1120,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #getShowHorizontalLines * @see #setShowGrid * @see #setShowVerticalLines - * @beaninfo - * bound: true - * description: Whether horizontal lines should be drawn in between the cells. */ + @BeanProperty(description + = "Whether horizontal lines should be drawn in between the cells.") public void setShowHorizontalLines(boolean showHorizontalLines) { boolean old = this.showHorizontalLines; this.showHorizontalLines = showHorizontalLines; @@ -1148,10 +1140,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #getShowVerticalLines * @see #setShowGrid * @see #setShowHorizontalLines - * @beaninfo - * bound: true - * description: Whether vertical lines should be drawn in between the cells. */ + @BeanProperty(description + = "Whether vertical lines should be drawn in between the cells.") public void setShowVerticalLines(boolean showVerticalLines) { boolean old = this.showVerticalLines; this.showVerticalLines = showVerticalLines; @@ -1198,15 +1189,14 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @see #getAutoResizeMode * @see #doLayout - * @beaninfo - * bound: true - * description: Whether the columns should adjust themselves automatically. - * enum: AUTO_RESIZE_OFF JTable.AUTO_RESIZE_OFF - * AUTO_RESIZE_NEXT_COLUMN JTable.AUTO_RESIZE_NEXT_COLUMN - * AUTO_RESIZE_SUBSEQUENT_COLUMNS JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS - * AUTO_RESIZE_LAST_COLUMN JTable.AUTO_RESIZE_LAST_COLUMN - * AUTO_RESIZE_ALL_COLUMNS JTable.AUTO_RESIZE_ALL_COLUMNS */ + @BeanProperty(enumerationValues = { + "JTable.AUTO_RESIZE_OFF", + "JTable.AUTO_RESIZE_NEXT_COLUMN", + "JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS", + "JTable.AUTO_RESIZE_LAST_COLUMN", + "JTable.AUTO_RESIZE_ALL_COLUMNS"}, description + = "Whether the columns should adjust themselves automatically.") public void setAutoResizeMode(int mode) { if (isValidAutoResizeMode(mode)) { int old = autoResizeMode; @@ -1248,10 +1238,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param autoCreateColumnsFromModel true if JTable should automatically create columns * @see #getAutoCreateColumnsFromModel * @see #createDefaultColumnsFromModel - * @beaninfo - * bound: true - * description: Automatically populates the columnModel when a new TableModel is submitted. */ + @BeanProperty(description + = "Automatically populates the columnModel when a new TableModel is submitted.") public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel) { if (this.autoCreateColumnsFromModel != autoCreateColumnsFromModel) { boolean old = this.autoCreateColumnsFromModel; @@ -1442,11 +1431,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #setTransferHandler * @see TransferHandler * @since 1.4 - * - * @beaninfo - * description: determines whether automatic drag handling is enabled - * bound: false */ + @BeanProperty(bound = false, description + = "determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) { checkDragEnabled(b); dragEnabled = b; @@ -1834,6 +1821,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see TransferHandler#canImport(TransferHandler.TransferSupport) * @since 1.6 */ + @BeanProperty(bound = false) public final DropLocation getDropLocation() { return dropLocation; } @@ -1853,12 +1841,10 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param autoCreateRowSorter whether or not a {@code RowSorter} * should be automatically created * @see javax.swing.table.TableRowSorter - * @beaninfo - * bound: true - * preferred: true - * description: Whether or not to turn on sorting by default. * @since 1.6 */ + @BeanProperty(preferred = true, description + = "Whether or not to turn on sorting by default.") public void setAutoCreateRowSorter(boolean autoCreateRowSorter) { boolean oldValue = this.autoCreateRowSorter; this.autoCreateRowSorter = autoCreateRowSorter; @@ -1889,12 +1875,10 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * is true. * * @param update whether or not to update the selection on sorting - * @beaninfo - * bound: true - * expert: true - * description: Whether or not to update the selection on sorting * @since 1.6 */ + @BeanProperty(expert = true, description + = "Whether or not to update the selection on sorting") public void setUpdateSelectionOnSort(boolean update) { if (updateSelectionOnSort != update) { updateSelectionOnSort = update; @@ -1929,11 +1913,10 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param sorter the RowSorter; null turns * sorting off * @see javax.swing.table.TableRowSorter - * @beaninfo - * bound: true - * description: The table's RowSorter * @since 1.6 */ + @BeanProperty(description + = "The table's RowSorter") public void setRowSorter(RowSorter sorter) { RowSorter oldRowSorter = null; if (sortManager != null) { @@ -1985,12 +1968,12 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param selectionMode the mode used by the row and column selection models * @see JList#setSelectionMode - * @beaninfo - * description: The selection mode used by the row and column selection models. - * enum: SINGLE_SELECTION ListSelectionModel.SINGLE_SELECTION - * SINGLE_INTERVAL_SELECTION ListSelectionModel.SINGLE_INTERVAL_SELECTION - * MULTIPLE_INTERVAL_SELECTION ListSelectionModel.MULTIPLE_INTERVAL_SELECTION */ + @BeanProperty(enumerationValues = { + "ListSelectionModel.SINGLE_SELECTION", + "ListSelectionModel.SINGLE_INTERVAL_SELECTION", + "ListSelectionModel.MULTIPLE_INTERVAL_SELECTION"}, description + = "The selection mode used by the row and column selection models.") public void setSelectionMode(int selectionMode) { clearSelection(); getSelectionModel().setSelectionMode(selectionMode); @@ -2002,11 +1985,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param rowSelectionAllowed true if this model will allow row selection * @see #getRowSelectionAllowed - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true, an entire row is selected for each selected cell. */ + @BeanProperty(visualUpdate = true, description + = "If true, an entire row is selected for each selected cell.") public void setRowSelectionAllowed(boolean rowSelectionAllowed) { boolean old = this.rowSelectionAllowed; this.rowSelectionAllowed = rowSelectionAllowed; @@ -2031,11 +2012,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param columnSelectionAllowed true if this model will allow column selection * @see #getColumnSelectionAllowed - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: If true, an entire column is selected for each selected cell. */ + @BeanProperty(visualUpdate = true, description + = "If true, an entire column is selected for each selected cell.") public void setColumnSelectionAllowed(boolean columnSelectionAllowed) { boolean old = columnModel.getColumnSelectionAllowed(); columnModel.setColumnSelectionAllowed(columnSelectionAllowed); @@ -2069,12 +2048,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * selection is allowed * @see #getCellSelectionEnabled * @see #isCellSelected - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: Select a rectangular region of cells rather than - * rows or columns. */ + @BeanProperty(visualUpdate = true, description + = "Select a rectangular region of cells rather than rows or columns.") public void setCellSelectionEnabled(boolean cellSelectionEnabled) { setRowSelectionAllowed(cellSelectionEnabled); setColumnSelectionAllowed(cellSelectionEnabled); @@ -2262,6 +2238,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * Returns the index of the first selected row, -1 if no row is selected. * @return the index of the first selected row */ + @BeanProperty(bound = false) public int getSelectedRow() { return selectionModel.getMinSelectionIndex(); } @@ -2271,6 +2248,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * -1 if no column is selected. * @return the index of the first selected column */ + @BeanProperty(bound = false) public int getSelectedColumn() { return columnModel.getSelectionModel().getMinSelectionIndex(); } @@ -2282,6 +2260,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * or an empty array if no row is selected * @see #getSelectedRow */ + @BeanProperty(bound = false) public int[] getSelectedRows() { int iMin = selectionModel.getMinSelectionIndex(); int iMax = selectionModel.getMaxSelectionIndex(); @@ -2309,6 +2288,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * or an empty array if no column is selected * @see #getSelectedColumn */ + @BeanProperty(bound = false) public int[] getSelectedColumns() { return columnModel.getSelectedColumns(); } @@ -2318,6 +2298,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @return the number of selected rows, 0 if no rows are selected */ + @BeanProperty(bound = false) public int getSelectedRowCount() { int iMin = selectionModel.getMinSelectionIndex(); int iMax = selectionModel.getMaxSelectionIndex(); @@ -2336,6 +2317,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @return the number of selected columns, 0 if no columns are selected */ + @BeanProperty(bound = false) public int getSelectedColumnCount() { return columnModel.getSelectedColumnCount(); } @@ -2523,10 +2505,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #setForeground * @see #setBackground * @see #setFont - * @beaninfo - * bound: true - * description: A default foreground color for selected cells. */ + @BeanProperty(description + = "A default foreground color for selected cells.") public void setSelectionForeground(Color selectionForeground) { Color old = this.selectionForeground; this.selectionForeground = selectionForeground; @@ -2561,10 +2542,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #setForeground * @see #setBackground * @see #setFont - * @beaninfo - * bound: true - * description: A default background color for selected cells. */ + @BeanProperty(description + = "A default background color for selected cells.") public void setSelectionBackground(Color selectionBackground) { Color old = this.selectionBackground; this.selectionBackground = selectionBackground; @@ -2680,6 +2660,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @return the number of rows shown in the JTable * @see #getColumnCount */ + @BeanProperty(bound = false) public int getRowCount() { RowSorter sorter = getRowSorter(); if (sorter != null) { @@ -2696,6 +2677,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #getRowCount * @see #removeColumn */ + @BeanProperty(bound = false) public int getColumnCount() { return getColumnModel().getColumnCount(); } @@ -3564,6 +3546,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #editingColumn * @see #editingRow */ + @BeanProperty(bound = false) public boolean isEditing() { return cellEditor != null; } @@ -3574,6 +3557,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @return Component handling editing session */ + @BeanProperty(bound = false) public Component getEditorComponent() { return editorComp; } @@ -3620,12 +3604,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param ui the TableUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(TableUI ui) { if (this.ui != ui) { super.setUI(ui); @@ -3681,6 +3662,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -3697,10 +3679,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param dataModel the new data source for this table * @throws IllegalArgumentException if {@code dataModel} is {@code null} * @see #getModel - * @beaninfo - * bound: true - * description: The model that is the source of the data for this view. */ + @BeanProperty(description + = "The model that is the source of the data for this view.") public void setModel(final TableModel dataModel) { if (dataModel == null) { throw new IllegalArgumentException("Cannot set a null TableModel"); @@ -3743,10 +3724,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param columnModel the new data source for this table * @throws IllegalArgumentException if {@code columnModel} is {@code null} * @see #getColumnModel - * @beaninfo - * bound: true - * description: The object governing the way columns appear in the view. */ + @BeanProperty(description + = "The object governing the way columns appear in the view.") public void setColumnModel(final TableColumnModel columnModel) { if (columnModel == null) { throw new IllegalArgumentException("Cannot set a null ColumnModel"); @@ -3788,10 +3768,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @throws IllegalArgumentException if {@code selectionModel} is * {@code null} * @see #getSelectionModel - * @beaninfo - * bound: true - * description: The selection model for rows. */ + @BeanProperty(description + = "The selection model for rows.") public void setSelectionModel(final ListSelectionModel selectionModel) { if (selectionModel == null) { throw new IllegalArgumentException("Cannot set a null SelectionModel"); @@ -4784,9 +4763,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @param size a Dimension object specifying the preferredSize of a * JViewport whose view is this table * @see Scrollable#getPreferredScrollableViewportSize - * @beaninfo - * description: The preferred size of the viewport. */ + @BeanProperty(bound = false, description + = "The preferred size of the viewport.") public void setPreferredScrollableViewportSize(Dimension size) { preferredViewportSize = size; } @@ -5222,6 +5201,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * to AUTO_RESIZE_OFF, otherwise returns true * @see Scrollable#getScrollableTracksViewportWidth */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { return !(autoResizeMode == AUTO_RESIZE_OFF); } @@ -5239,6 +5219,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #setFillsViewportHeight * @see #getFillsViewportHeight */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportHeight() { Container parent = SwingUtilities.getUnwrappedParent(this); return getFillsViewportHeight() @@ -5260,11 +5241,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @see #getFillsViewportHeight * @see #getScrollableTracksViewportHeight * @since 1.6 - * @beaninfo - * bound: true - * description: Whether or not this table is always made large enough - * to fill the height of an enclosing viewport */ + @BeanProperty(description + = "Whether or not this table is always made large enough to fill the height of an enclosing viewport") public void setFillsViewportHeight(boolean fillsViewportHeight) { boolean old = this.fillsViewportHeight; this.fillsViewportHeight = fillsViewportHeight; @@ -5661,10 +5640,9 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * * @param anEditor the active cell editor * @see #cellEditor - * @beaninfo - * bound: true - * description: The table's active cell editor. */ + @BeanProperty(description + = "The table's active cell editor.") public void setCellEditor(TableCellEditor anEditor) { TableCellEditor oldEditor = cellEditor; cellEditor = anEditor; @@ -6656,6 +6634,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * @return an AccessibleJTable that serves as the * AccessibleContext of this JTable */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTable(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTextArea.java b/jdk/src/java.desktop/share/classes/javax/swing/JTextArea.java index 48b586e8ca0..d64fa02721b 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTextArea.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTextArea.java @@ -25,17 +25,12 @@ package javax.swing; import java.awt.*; -import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.swing.text.*; -import javax.swing.plaf.*; import javax.accessibility.*; -import java.util.Collections; -import java.util.Set; -import java.util.StringTokenizer; - import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; /** @@ -116,15 +111,13 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A multi-line area that displays plain text. - * * @author Timothy Prinzing * @see JTextPane * @see JEditorPane * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "A multi-line area that displays plain text.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JTextArea extends JTextComponent { @@ -237,6 +230,7 @@ public class JTextArea extends JTextComponent { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -260,11 +254,9 @@ public class JTextArea extends JTextComponent { * * @param size number of characters to expand to * @see #getTabSize - * @beaninfo - * preferred: true - * bound: true - * description: the number of characters to expand tabs to */ + @BeanProperty(preferred = true, description + = "the number of characters to expand tabs to") public void setTabSize(int size) { Document doc = getDocument(); if (doc != null) { @@ -302,11 +294,9 @@ public class JTextArea extends JTextComponent { * * @param wrap indicates if lines should be wrapped * @see #getLineWrap - * @beaninfo - * preferred: true - * bound: true - * description: should lines be wrapped */ + @BeanProperty(preferred = true, description + = "should lines be wrapped") public void setLineWrap(boolean wrap) { boolean old = this.wrap; this.wrap = wrap; @@ -336,11 +326,9 @@ public class JTextArea extends JTextComponent { * @param word indicates if word boundaries should be used * for line wrapping * @see #getWrapStyleWord - * @beaninfo - * preferred: false - * bound: true - * description: should wrapping occur at word boundaries */ + @BeanProperty(description + = "should wrapping occur at word boundaries") public void setWrapStyleWord(boolean word) { boolean old = this.word; this.word = word; @@ -388,6 +376,7 @@ public class JTextArea extends JTextComponent { * * @return the number of lines > 0 */ + @BeanProperty(bound = false) public int getLineCount() { Element map = getDocument().getDefaultRootElement(); return map.getElementCount(); @@ -531,9 +520,9 @@ public class JTextArea extends JTextComponent { * @param rows the number of rows >= 0 * @exception IllegalArgumentException if rows is less than 0 * @see #getRows - * @beaninfo - * description: the number of rows preferred for display */ + @BeanProperty(bound = false, description + = "the number of rows preferred for display") public void setRows(int rows) { int oldVal = this.rows; if (rows < 0) { @@ -575,9 +564,9 @@ public class JTextArea extends JTextComponent { * @param columns the number of columns >= 0 * @exception IllegalArgumentException if columns is less than 0 * @see #getColumns - * @beaninfo - * description: the number of columns preferred for display */ + @BeanProperty(bound = false, description + = "the number of columns preferred for display") public void setColumns(int columns) { int oldVal = this.columns; if (columns < 0) { @@ -680,6 +669,7 @@ public class JTextArea extends JTextComponent { * @return true if a viewport should force the Scrollables width * to match its own. */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { return (wrap) ? true : super.getScrollableTracksViewportWidth(); } @@ -693,6 +683,7 @@ public class JTextArea extends JTextComponent { * @return The preferredSize of a JViewport whose view is this Scrollable. * @see JViewport#getPreferredSize */ + @BeanProperty(bound = false) public Dimension getPreferredScrollableViewportSize() { Dimension size = super.getPreferredScrollableViewportSize(); size = (size == null) ? new Dimension(400,400) : size; @@ -766,6 +757,7 @@ public class JTextArea extends JTextComponent { * @return an AccessibleJTextArea that serves as the * AccessibleContext of this JTextArea */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTextArea(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTextField.java b/jdk/src/java.desktop/share/classes/javax/swing/JTextField.java index 94290052870..d3ec0dad46b 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTextField.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTextField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,18 +24,17 @@ */ package javax.swing; -import sun.swing.SwingUtilities2; - import java.awt.*; import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import javax.swing.text.*; -import javax.swing.plaf.*; import javax.swing.event.*; import javax.accessibility.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import java.io.Serializable; @@ -152,16 +151,14 @@ import java.io.Serializable; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: A component which allows for the editing of a single line of text. - * * @author Timothy Prinzing * @see #setActionCommand * @see JPasswordField * @see #addActionListener * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "A component which allows for the editing of a single line of text.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JTextField extends JTextComponent implements SwingConstants { @@ -253,6 +250,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -266,11 +264,9 @@ public class JTextField extends JTextComponent implements SwingConstants { * * @param doc the document to display/edit * @see #getDocument - * @beaninfo - * description: the text document model - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the text document model") public void setDocument(Document doc) { if (doc != null) { doc.putProperty("filterNewlines", Boolean.TRUE); @@ -332,14 +328,14 @@ public class JTextField extends JTextComponent implements SwingConstants { * @param alignment the alignment * @exception IllegalArgumentException if alignment * is not a valid key - * @beaninfo - * preferred: true - * bound: true - * description: Set the field alignment to LEFT, CENTER, RIGHT, - * LEADING (the default) or TRAILING - * enum: LEFT JTextField.LEFT CENTER JTextField.CENTER RIGHT JTextField.RIGHT - * LEADING JTextField.LEADING TRAILING JTextField.TRAILING */ + @BeanProperty(preferred = true, enumerationValues = { + "JTextField.LEFT", + "JTextField.CENTER", + "JTextField.RIGHT", + "JTextField.LEADING", + "JTextField.TRAILING"}, description + = "Set the field alignment to LEFT, CENTER, RIGHT, LEADING (the default) or TRAILING") public void setHorizontalAlignment(int alignment) { if (alignment == horizontalAlignment) return; int oldValue = horizontalAlignment; @@ -382,9 +378,9 @@ public class JTextField extends JTextComponent implements SwingConstants { * @param columns the number of columns >= 0 * @exception IllegalArgumentException if columns * is less than 0 - * @beaninfo - * description: the number of columns preferred for display */ + @BeanProperty(bound = false, description + = "the number of columns preferred for display") public void setColumns(int columns) { int oldVal = this.columns; if (columns < 0) { @@ -476,6 +472,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public synchronized ActionListener[] getActionListeners() { return listenerList.getListeners(ActionListener.class); } @@ -559,11 +556,9 @@ public class JTextField extends JTextComponent implements SwingConstants { * @see #configurePropertiesFromAction * @see #createActionPropertyChangeListener * @see #actionPropertyChanged - * @beaninfo - * bound: true - * attribute: visualUpdate true - * description: the Action instance connected with this ActionEvent source */ + @BeanProperty(visualUpdate = true, description + = "the Action instance connected with this ActionEvent source") public void setAction(Action a) { Action oldValue = getAction(); if (action==null || !action.equals(a)) { @@ -712,6 +707,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * * @return the command list */ + @BeanProperty(bound = false) public Action[] getActions() { return TextAction.augmentList(super.getActions(), defaultActions); } @@ -742,6 +738,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * @return the visibility * @see BoundedRangeModel */ + @BeanProperty(bound = false) public BoundedRangeModel getHorizontalVisibility() { return visibility; } @@ -926,6 +923,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * @return an AccessibleJTextField that serves as the * AccessibleContext of this JTextField */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTextField(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTextPane.java b/jdk/src/java.desktop/share/classes/javax/swing/JTextPane.java index f9c2de42a65..e5ef17b27d0 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTextPane.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTextPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -25,15 +25,12 @@ package javax.swing; import java.awt.*; -import java.awt.event.ActionEvent; - +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; import javax.swing.text.*; -import javax.swing.event.*; -import javax.swing.plaf.*; /** * A text component that can be marked up with attributes that are @@ -72,14 +69,12 @@ import javax.swing.plaf.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer true - * description: A text component that can be marked up with attributes that are graphically represented. - * * @author Timothy Prinzing * @see javax.swing.text.StyledEditorKit * @since 1.2 */ +@JavaBean(description = "A text component that can be marked up with attributes that are graphically represented.") +@SwingContainer @SuppressWarnings("serial") // Same-version serialization only public class JTextPane extends JEditorPane { @@ -120,6 +115,7 @@ public class JTextPane extends JEditorPane { * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -338,6 +334,7 @@ public class JTextPane extends JEditorPane { * * @return the attributes, or null */ + @BeanProperty(bound = false) public AttributeSet getCharacterAttributes() { StyledDocument doc = getStyledDocument(); Element run = doc.getCharacterElement(getCaretPosition()); @@ -379,6 +376,7 @@ public class JTextPane extends JEditorPane { * * @return the attributes */ + @BeanProperty(bound = false) public AttributeSet getParagraphAttributes() { StyledDocument doc = getStyledDocument(); Element paragraph = doc.getParagraphElement(getCaretPosition()); @@ -410,6 +408,7 @@ public class JTextPane extends JEditorPane { * * @return the attributes */ + @BeanProperty(bound = false) public MutableAttributeSet getInputAttributes() { return getStyledEditorKit().getInputAttributes(); } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JToggleButton.java b/jdk/src/java.desktop/share/classes/javax/swing/JToggleButton.java index 08ec0be8659..da9387e3061 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JToggleButton.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JToggleButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -26,16 +26,15 @@ package javax.swing; import java.awt.*; import java.awt.event.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; -import javax.swing.event.*; import javax.swing.plaf.*; import javax.accessibility.*; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - /** * An implementation of a two-state button. * The JRadioButton and JCheckBox classes @@ -68,15 +67,13 @@ import java.io.IOException; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * description: An implementation of a two-state button. - * * @see JRadioButton * @see JCheckBox * @author Jeff Dinkins * @since 1.2 */ +@JavaBean(defaultProperty = "UIClassID", description = "An implementation of a two-state button.") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public class JToggleButton extends AbstractButton implements Accessible { @@ -195,9 +192,9 @@ public class JToggleButton extends AbstractButton implements Accessible { * @return String "ToggleButtonUI" * @see JComponent#getUIClassID * @see UIDefaults#getUI - * @beaninfo - * description: A string that specifies the name of the L&F class */ + @BeanProperty(bound = false, description + = "A string that specifies the name of the L&F class") public String getUIClassID() { return uiClassID; } @@ -362,10 +359,9 @@ public class JToggleButton extends AbstractButton implements Accessible { * * @return an AccessibleJToggleButton that serves as the * AccessibleContext of this JToggleButton - * @beaninfo - * expert: true - * description: The AccessibleContext associated with this ToggleButton. */ + @BeanProperty(bound = false, expert = true, description + = "The AccessibleContext associated with this ToggleButton.") public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJToggleButton(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JToolBar.java b/jdk/src/java.desktop/share/classes/javax/swing/JToolBar.java index 0a7e6fef71d..f13e5c41161 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JToolBar.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JToolBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -22,31 +22,26 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; -import java.awt.Color; import java.awt.Component; -import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; import java.awt.LayoutManager; import java.awt.LayoutManager2; -import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; -import javax.swing.border.Border; import javax.swing.plaf.*; import javax.accessibility.*; import java.io.Serializable; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; -import java.util.Hashtable; - /** * JToolBar provides a component that is useful for @@ -78,15 +73,13 @@ import java.util.Hashtable; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer true - * description: A component which displays commonly used controls or Actions. - * * @author Georges Saab * @author Jeff Shapiro * @see Action * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component which displays commonly used controls or Actions.") +@SwingContainer @SuppressWarnings("serial") // Same-version serialization only public class JToolBar extends JComponent implements SwingConstants, Accessible { @@ -175,12 +168,9 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * * @param ui the ToolBarUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(ToolBarUI ui) { super.setUI(ui); } @@ -212,6 +202,7 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -266,11 +257,9 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * @param m an Insets object that defines the space * between the border and the buttons * @see Insets - * @beaninfo - * description: The margin between the tool bar's border and contents - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "The margin between the tool bar's border and contents") public void setMargin(Insets m) { Insets old = margin; @@ -317,11 +306,9 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * * @param b if true, the border is painted * @see #isBorderPainted - * @beaninfo - * description: Does the tool bar paint its borders? - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "Does the tool bar paint its borders?") public void setBorderPainted(boolean b) { if ( paintBorder != b ) @@ -376,11 +363,9 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * @param b if true, the tool bar can be moved; * false otherwise * @see #isFloatable - * @beaninfo - * description: Can the tool bar be made to float by the user? - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "Can the tool bar be made to float by the user?") public void setFloatable( boolean b ) { if ( floatable != b ) @@ -418,13 +403,11 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * @exception IllegalArgumentException if orientation is neither * HORIZONTAL nor VERTICAL * @see #getOrientation - * @beaninfo - * description: The current orientation of the tool bar - * bound: true - * preferred: true - * enum: HORIZONTAL SwingConstants.HORIZONTAL - * VERTICAL SwingConstants.VERTICAL */ + @BeanProperty(preferred = true, enumerationValues = { + "SwingConstants.HORIZONTAL", + "SwingConstants.VERTICAL"}, description + = "The current orientation of the tool bar") public void setOrientation( int o ) { checkOrientation( o ); @@ -451,12 +434,9 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * * @param rollover true for rollover toolbar buttons; otherwise false * @since 1.4 - * @beaninfo - * bound: true - * preferred: true - * attribute: visualUpdate true - * description: Will draw rollover button borders in the toolbar. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "Will draw rollover button borders in the toolbar.") public void setRollover(boolean rollover) { putClientProperty("JToolBar.isRollover", rollover ? Boolean.TRUE : Boolean.FALSE); @@ -836,6 +816,7 @@ public class JToolBar extends JComponent implements SwingConstants, Accessible * @return an AccessibleJToolBar that serves as the * AccessibleContext of this JToolBar */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJToolBar(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JToolTip.java b/jdk/src/java.desktop/share/classes/javax/swing/JToolTip.java index dad092dc5fd..7d2ac8c6ad8 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JToolTip.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JToolTip.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -25,9 +25,11 @@ package javax.swing; + import javax.swing.plaf.*; import javax.accessibility.*; +import java.beans.BeanProperty; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.IOException; @@ -121,11 +123,9 @@ public class JToolTip extends JComponent implements Accessible { * The string tipText may be null. * * @param tipText the String to display - * @beaninfo - * preferred: true - * bound: true - * description: Sets the text of the tooltip */ + @BeanProperty(preferred = true, description + = "Sets the text of the tooltip") public void setTipText(String tipText) { String oldValue = this.tipText; this.tipText = tipText; @@ -156,10 +156,9 @@ public class JToolTip extends JComponent implements Accessible { * * @param c the JComponent being described * @see JComponent#createToolTip - * @beaninfo - * bound: true - * description: Sets the component that the tooltip describes. */ + @BeanProperty(description + = "Sets the component that the tooltip describes.") public void setComponent(JComponent c) { JComponent oldValue = this.component; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JTree.java b/jdk/src/java.desktop/share/classes/javax/swing/JTree.java index 9d58f86ea09..a46217fa64d 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JTree.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JTree.java @@ -22,12 +22,15 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing; import java.awt.*; import java.awt.event.*; -import java.beans.*; +import java.beans.JavaBean; +import java.beans.BeanProperty; +import java.beans.ConstructorProperties; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.*; import java.util.*; import javax.swing.event.*; @@ -35,11 +38,11 @@ import javax.swing.plaf.*; import javax.swing.tree.*; import javax.swing.text.Position; import javax.accessibility.*; + import sun.swing.SwingUtilities2; import sun.swing.SwingUtilities2.Section; import static sun.swing.SwingUtilities2.Section.*; - /** * * A control that displays a set of hierarchical data as an outline. @@ -134,15 +137,14 @@ import static sun.swing.SwingUtilities2.Section.*; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. *

    - * @beaninfo - * attribute: isContainer false - * description: A component that displays a set of hierarchical data as an outline. * * @author Rob Davis * @author Ray Ryan * @author Scott Violet * @since 1.2 */ +@JavaBean(defaultProperty = "UI", description = "A component that displays a set of hierarchical data as an outline.") +@SwingContainer(false) @SuppressWarnings("serial") public class JTree extends JComponent implements Scrollable, Accessible { @@ -687,12 +689,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param ui the TreeUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(TreeUI ui) { if (this.ui != ui) { settingUI = true; @@ -728,6 +727,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @see JComponent#getUIClassID * @see UIDefaults#getUI */ + @BeanProperty(bound = false) public String getUIClassID() { return uiClassID; } @@ -750,11 +750,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param x the TreeCellRenderer that is to render each cell - * @beaninfo - * bound: true - * description: The TreeCellRenderer that will be used to draw - * each cell. */ + @BeanProperty(description + = "The TreeCellRenderer that will be used to draw each cell.") public void setCellRenderer(TreeCellRenderer x) { TreeCellRenderer oldValue = cellRenderer; @@ -771,10 +769,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param flag a boolean value, true if the tree is editable - * @beaninfo - * bound: true - * description: Whether the tree is editable. */ + @BeanProperty(description + = "Whether the tree is editable.") public void setEditable(boolean flag) { boolean oldValue = this.editable; @@ -806,11 +803,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param cellEditor the TreeCellEditor to use - * @beaninfo - * bound: true - * description: The cell editor. A null value implies the tree - * cannot be edited. */ + @BeanProperty(description + = "The cell editor. A null value implies the tree cannot be edited.") public void setCellEditor(TreeCellEditor cellEditor) { TreeCellEditor oldEditor = this.cellEditor; @@ -844,10 +839,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param newModel the TreeModel that is to provide the data - * @beaninfo - * bound: true - * description: The TreeModel that will provide the data. */ + @BeanProperty(description + = "The TreeModel that will provide the data.") public void setModel(TreeModel newModel) { clearSelection(); @@ -903,11 +897,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param rootVisible true if the root node of the tree is to be displayed * @see #rootVisible - * @beaninfo - * bound: true - * description: Whether or not the root node - * from the TreeModel is visible. */ + @BeanProperty(description + = "Whether or not the root node from the TreeModel is visible.") public void setRootVisible(boolean rootVisible) { boolean oldValue = this.rootVisible; @@ -932,11 +924,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * otherwise, false * @see #showsRootHandles * @see #getShowsRootHandles - * @beaninfo - * bound: true - * description: Whether the node handles are to be - * displayed. */ + @BeanProperty(description + = "Whether the node handles are to be displayed.") public void setShowsRootHandles(boolean newValue) { boolean oldValue = showsRootHandles; TreeModel model = getModel(); @@ -970,10 +960,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param rowHeight the height of each cell, in pixels - * @beaninfo - * bound: true - * description: The height of each cell. */ + @BeanProperty(description + = "The height of each cell.") public void setRowHeight(int rowHeight) { int oldValue = this.rowHeight; @@ -1001,6 +990,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return true if the height of each row is a fixed size */ + @BeanProperty(bound = false) public boolean isFixedRowHeight() { return (rowHeight > 0); @@ -1015,11 +1005,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param newValue true to suggest a large model to the UI * @see #largeModel - * @beaninfo - * bound: true - * description: Whether the UI should use a - * large model. */ + @BeanProperty(description + = "Whether the UI should use a large model.") public void setLargeModel(boolean newValue) { boolean oldValue = largeModel; @@ -1048,12 +1036,10 @@ public class JTree extends JComponent implements Scrollable, Accessible * @param newValue true means that stopCellEditing is invoked * when editing is interrupted, and data is saved; false means that * cancelCellEditing is invoked, and changes are lost - * @beaninfo - * bound: true - * description: Determines what happens when editing is interrupted, - * selecting another node in the tree, a change in the - * tree's data, or some other means. */ + @BeanProperty(description + = "Determines what happens when editing is interrupted, selecting another node in the tree, " + + "a change in the tree's data, or some other means.") public void setInvokesStopCellEditing(boolean newValue) { boolean oldValue = invokesStopCellEditing; @@ -1090,11 +1076,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @param newValue false to disable scrolling on expansion; * true to enable it * @see #getScrollsOnExpand - * - * @beaninfo - * bound: true - * description: Indicates if a node descendant should be scrolled when expanded. */ + @BeanProperty(description + = "Indicates if a node descendant should be scrolled when expanded.") public void setScrollsOnExpand(boolean newValue) { boolean oldValue = scrollsOnExpand; @@ -1121,10 +1105,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param clickCount the number of mouse clicks to get a node expanded or closed * @since 1.3 - * @beaninfo - * bound: true - * description: Number of clicks before a node will expand/collapse. */ + @BeanProperty(description + = "Number of clicks before a node will expand/collapse.") public void setToggleClickCount(int clickCount) { int oldCount = toggleClickCount; @@ -1160,11 +1143,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @param newValue the new value for expandsSelectedPaths * * @since 1.3 - * @beaninfo - * bound: true - * description: Indicates whether changes to the selection should make - * the parent of the path visible. */ + @BeanProperty(description + = "Indicates whether changes to the selection should make the parent of the path visible.") public void setExpandsSelectedPaths(boolean newValue) { boolean oldValue = expandsSelectedPaths; @@ -1212,11 +1193,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @see #setTransferHandler * @see TransferHandler * @since 1.4 - * - * @beaninfo - * description: determines whether automatic drag handling is enabled - * bound: false */ + @BeanProperty(bound = false, description + = "determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) { checkDragEnabled(b); dragEnabled = b; @@ -1505,6 +1484,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @see TransferHandler#canImport(TransferHandler.TransferSupport) * @since 1.6 */ + @BeanProperty(bound = false) public final DropLocation getDropLocation() { return dropLocation; } @@ -1635,6 +1615,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return the number of viewable nodes */ + @BeanProperty(bound = false) public int getRowCount() { TreeUI tree = getUI(); @@ -1677,10 +1658,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param newPath the new lead path * @since 1.3 - * @beaninfo - * bound: true - * description: Lead selection path */ + @BeanProperty(description + = "Lead selection path") public void setLeadSelectionPath(TreePath newPath) { TreePath oldValue = leadPath; @@ -1705,10 +1685,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @param newPath the new anchor path * @since 1.3 - * @beaninfo - * bound: true - * description: Anchor selection path */ + @BeanProperty(description + = "Anchor selection path") public void setAnchorSelectionPath(TreePath newPath) { TreePath oldValue = anchorPath; @@ -1828,6 +1807,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * null if nothing is selected * @see TreePath#getLastPathComponent */ + @BeanProperty(bound = false) public Object getLastSelectedPathComponent() { TreePath selPath = getSelectionModel().getSelectionPath(); @@ -1894,6 +1874,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return the number of nodes selected */ + @BeanProperty(bound = false) public int getSelectionCount() { return selectionModel.getSelectionCount(); } @@ -1904,6 +1885,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return the smallest selected row */ + @BeanProperty(bound = false) public int getMinSelectionRow() { return getSelectionModel().getMinSelectionRow(); } @@ -1914,6 +1896,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return the largest selected row */ + @BeanProperty(bound = false) public int getMaxSelectionRow() { return getSelectionModel().getMaxSelectionRow(); } @@ -1925,6 +1908,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * where 0 is the first row in the display; or -1 * if leadPath is null */ + @BeanProperty(bound = false) public int getLeadSelectionRow() { TreePath leadPath = getLeadSelectionPath(); @@ -2198,6 +2182,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * null if row < 0 * or row >= getRowCount() */ + @BeanProperty(bound = false) public TreePath getPathForRow(int row) { TreeUI tree = getUI(); @@ -2368,6 +2353,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @return true if the user is currently editing a node * @see #getSelectionPath */ + @BeanProperty(bound = false) public boolean isEditing() { TreeUI tree = getUI(); @@ -2430,6 +2416,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return the TreePath for the node being edited */ + @BeanProperty(bound = false) public TreePath getEditingPath() { TreeUI tree = getUI(); @@ -2457,10 +2444,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * @param selectionModel the TreeSelectionModel to use, * or null to disable selections * @see TreeSelectionModel - * @beaninfo - * bound: true - * description: The tree's selection model. */ + @BeanProperty(description + = "The tree's selection model.") public void setSelectionModel(TreeSelectionModel selectionModel) { if(selectionModel == null) selectionModel = EmptySelectionModel.sharedInstance(); @@ -2700,6 +2686,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return true if the selection is currently empty */ + @BeanProperty(bound = false) public boolean isSelectionEmpty() { return getSelectionModel().isSelectionEmpty(); } @@ -2738,6 +2725,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public TreeExpansionListener[] getTreeExpansionListeners() { return listenerList.getListeners(TreeExpansionListener.class); } @@ -2770,6 +2758,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public TreeWillExpandListener[] getTreeWillExpandListeners() { return listenerList.getListeners(TreeWillExpandListener.class); } @@ -2929,6 +2918,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * array if no listeners have been added * @since 1.4 */ + @BeanProperty(bound = false) public TreeSelectionListener[] getTreeSelectionListeners() { return listenerList.getListeners(TreeSelectionListener.class); } @@ -2980,10 +2970,9 @@ public class JTree extends JComponent implements Scrollable, Accessible * This is a bound property. * * @param newCount the number of rows to display - * @beaninfo - * bound: true - * description: The number of rows that are to be displayed. */ + @BeanProperty(description + = "The number of rows that are to be displayed.") public void setVisibleRowCount(int newCount) { int oldCount = visibleRowCount; @@ -3459,6 +3448,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * * @return a Dimension object containing the preferred size */ + @BeanProperty(bound = false) public Dimension getPreferredScrollableViewportSize() { int width = getPreferredSize().width; int visRows = getVisibleRowCount(); @@ -3565,6 +3555,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @return whether the tree should track the width of the viewport * @see Scrollable#getScrollableTracksViewportWidth */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -3582,6 +3573,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @return whether the tree should track the height of the viewport * @see Scrollable#getScrollableTracksViewportHeight */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportHeight() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -4160,6 +4152,7 @@ public class JTree extends JComponent implements Scrollable, Accessible * @return an AccessibleJTree that serves as the * AccessibleContext of this JTree */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTree(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JViewport.java b/jdk/src/java.desktop/share/classes/javax/swing/JViewport.java index 8090dc78087..d416dd7c39d 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JViewport.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JViewport.java @@ -28,6 +28,7 @@ package javax.swing; import java.awt.*; import java.awt.event.*; import java.awt.peer.ComponentPeer; +import java.beans.BeanProperty; import java.beans.Transient; import javax.swing.plaf.ViewportUI; @@ -300,13 +301,10 @@ public class JViewport extends JComponent implements Accessible * * @param ui the ViewportUI L&F object * @see UIDefaults#getUI - * @beaninfo - * bound: true - * hidden: true - * attribute: visualUpdate true - * description: The UI object that implements the Component's LookAndFeel. * @since 1.3 */ + @BeanProperty(hidden = true, visualUpdate = true, description + = "The UI object that implements the Component's LookAndFeel.") public void setUI(ViewportUI ui) { super.setUI(ui); } @@ -588,9 +586,8 @@ public class JViewport extends JComponent implements Accessible * @param insets the Insets object which can be reused * @return this viewports inset values * @see #getInsets - * @beaninfo - * expert: true */ + @BeanProperty(expert = true) public final Insets getInsets(Insets insets) { insets.left = insets.top = insets.right = insets.bottom = 0; return insets; @@ -861,15 +858,13 @@ public class JViewport extends JComponent implements Accessible * @see #BACKINGSTORE_SCROLL_MODE * @see #SIMPLE_SCROLL_MODE * - * @beaninfo - * bound: false - * description: Method of moving contents for incremental scrolls. - * enum: BLIT_SCROLL_MODE JViewport.BLIT_SCROLL_MODE - * BACKINGSTORE_SCROLL_MODE JViewport.BACKINGSTORE_SCROLL_MODE - * SIMPLE_SCROLL_MODE JViewport.SIMPLE_SCROLL_MODE - * * @since 1.3 */ + @BeanProperty(bound = false, enumerationValues = { + "JViewport.BLIT_SCROLL_MODE", + "JViewport.BACKINGSTORE_SCROLL_MODE", + "JViewport.SIMPLE_SCROLL_MODE"}, description + = "Method of moving contents for incremental scrolls.") public void setScrollMode(int mode) { scrollMode = mode; backingStore = mode == BACKINGSTORE_SCROLL_MODE; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JWindow.java b/jdk/src/java.desktop/share/classes/javax/swing/JWindow.java index 804d4e3edc7..d25bad42691 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JWindow.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -26,10 +26,8 @@ package javax.swing; import java.awt.*; import java.awt.event.*; -import java.beans.PropertyChangeListener; -import java.util.Locale; -import java.util.Vector; -import java.io.Serializable; +import java.beans.JavaBean; +import java.beans.BeanProperty; import javax.accessibility.*; @@ -83,14 +81,11 @@ import javax.accessibility.*; * * @see JRootPane * - * @beaninfo - * attribute: isContainer true - * attribute: containerDelegate getContentPane - * description: A toplevel window which has no system border or controls. - * * @author David Kloba * @since 1.2 */ +@JavaBean(defaultProperty = "accessibleContext", description = "A toplevel window which has no system border or controls.") +@SwingContainer(delegate = "getContentPane") @SuppressWarnings("serial") public class JWindow extends Window implements Accessible, RootPaneContainer, @@ -328,12 +323,9 @@ public class JWindow extends Window implements Accessible, * @see #getTransferHandler * @see java.awt.Component#setDropTarget * @since 1.6 - * - * @beaninfo - * bound: true - * hidden: true - * description: Mechanism for transfer of data into the component */ + @BeanProperty(hidden = true, description + = "Mechanism for transfer of data into the component") public void setTransferHandler(TransferHandler newHandler) { TransferHandler oldHandler = transferHandler; transferHandler = newHandler; @@ -376,10 +368,9 @@ public class JWindow extends Window implements Accessible, * @see #setLayout * @see #isRootPaneCheckingEnabled * @see javax.swing.RootPaneContainer - * @beaninfo - * hidden: true - * description: Whether the add and setLayout methods are forwarded */ + @BeanProperty(hidden = true, description + = "Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled) { rootPaneCheckingEnabled = enabled; } @@ -463,6 +454,8 @@ public class JWindow extends Window implements Accessible, * @see #setRootPane * @see RootPaneContainer#getRootPane */ + @BeanProperty(bound = false, hidden = true, description + = "the RootPane object for this window.") public JRootPane getRootPane() { return rootPane; } @@ -474,10 +467,6 @@ public class JWindow extends Window implements Accessible, * * @param root the new rootPane property * @see #getRootPane - * - * @beaninfo - * hidden: true - * description: the RootPane object for this window. */ protected void setRootPane(JRootPane root) { if(rootPane != null) { @@ -519,12 +508,9 @@ public class JWindow extends Window implements Accessible, * exception) if the content pane parameter is null * @see #getContentPane * @see RootPaneContainer#setContentPane - * - * @beaninfo - * hidden: true - * description: The client area of the window where child - * components are normally inserted. */ + @BeanProperty(bound = false, hidden = true, description + = "The client area of the window where child components are normally inserted.") public void setContentPane(Container contentPane) { getRootPane().setContentPane(contentPane); } @@ -550,11 +536,9 @@ public class JWindow extends Window implements Accessible, * exception) if the content pane parameter is null * @see #getLayeredPane * @see RootPaneContainer#setLayeredPane - * - * @beaninfo - * hidden: true - * description: The pane which holds the various window layers. */ + @BeanProperty(bound = false, hidden = true, description + = "The pane which holds the various window layers.") public void setLayeredPane(JLayeredPane layeredPane) { getRootPane().setLayeredPane(layeredPane); } @@ -577,11 +561,9 @@ public class JWindow extends Window implements Accessible, * * @see #getGlassPane * @see RootPaneContainer#setGlassPane - * - * @beaninfo - * hidden: true - * description: A transparent pane used for menu rendering. */ + @BeanProperty(bound = false, hidden = true, description + = "A transparent pane used for menu rendering.") public void setGlassPane(Component glassPane) { getRootPane().setGlassPane(glassPane); } @@ -591,6 +573,7 @@ public class JWindow extends Window implements Accessible, * * @since 1.6 */ + @BeanProperty(bound = false) public Graphics getGraphics() { JComponent.getGraphicsInvoked(this); return super.getGraphics(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java b/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java index 374882a6cea..b3fda891612 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -26,6 +26,7 @@ package javax.swing.colorchooser; import java.awt.*; +import java.beans.BeanProperty; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.*; @@ -222,13 +223,10 @@ public abstract class AbstractColorChooserPanel extends JPanel { *

    The default value is {@code true}. * * @param b true if the transparency of a color can be selected - * - * @beaninfo - * bound: true - * description: Sets the transparency of a color selection on or off. - * * @see #isColorTransparencySelectionEnabled() */ + @BeanProperty(description + = "Sets the transparency of a color selection on or off.") public void setColorTransparencySelectionEnabled(boolean b){ } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java b/jdk/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java index 546e962c9fa..ac2802d93c4 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing.table; import sun.swing.table.DefaultTableCellHeaderRenderer; @@ -36,14 +35,13 @@ import javax.swing.event.*; import javax.swing.plaf.*; import javax.accessibility.*; +import java.beans.BeanProperty; import java.beans.PropertyChangeListener; import java.beans.Transient; import java.io.ObjectOutputStream; -import java.io.ObjectInputStream; import java.io.IOException; - /** * This is the object which manages the header of the JTable. *

    @@ -167,10 +165,9 @@ public class JTableHeader extends JComponent implements TableColumnModelListener /** * Sets the table associated with this header. * @param table the new table - * @beaninfo - * bound: true - * description: The table associated with this header. */ + @BeanProperty(description + = "The table associated with this header.") public void setTable(JTable table) { JTable old = this.table; this.table = table; @@ -191,10 +188,9 @@ public class JTableHeader extends JComponent implements TableColumnModelListener * @param reorderingAllowed true if the table view should allow * reordering; otherwise false * @see #getReorderingAllowed - * @beaninfo - * bound: true - * description: Whether the user can drag column headers to reorder columns. */ + @BeanProperty(description + = "Whether the user can drag column headers to reorder columns.") public void setReorderingAllowed(boolean reorderingAllowed) { boolean old = this.reorderingAllowed; this.reorderingAllowed = reorderingAllowed; @@ -219,10 +215,9 @@ public class JTableHeader extends JComponent implements TableColumnModelListener * @param resizingAllowed true if table view should allow * resizing * @see #getResizingAllowed - * @beaninfo - * bound: true - * description: Whether the user can resize columns by dragging between headers. */ + @BeanProperty(description + = "Whether the user can resize columns by dragging between headers.") public void setResizingAllowed(boolean resizingAllowed) { boolean old = this.resizingAllowed; this.resizingAllowed = resizingAllowed; @@ -516,10 +511,9 @@ public class JTableHeader extends JComponent implements TableColumnModelListener * @exception IllegalArgumentException * if newModel is null * @see #getColumnModel - * @beaninfo - * bound: true - * description: The object governing the way columns appear in the view. */ + @BeanProperty(description + = "The object governing the way columns appear in the view.") public void setColumnModel(TableColumnModel columnModel) { if (columnModel == null) { throw new IllegalArgumentException("Cannot set a null ColumnModel"); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/table/TableColumn.java b/jdk/src/java.desktop/share/classes/javax/swing/table/TableColumn.java index 0d54da6d1d7..e1d908124d4 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/table/TableColumn.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/table/TableColumn.java @@ -26,6 +26,7 @@ package javax.swing.table; import java.awt.Component; +import java.beans.BeanProperty; import java.beans.PropertyChangeListener; import java.io.Serializable; @@ -308,10 +309,9 @@ public class TableColumn extends Object implements Serializable { * TableColumn. As the TableColumn * is moved around in the view the model index remains constant. * @param modelIndex the new modelIndex - * @beaninfo - * bound: true - * description: The model index. */ + @BeanProperty(description + = "The model index.") public void setModelIndex(int modelIndex) { int old = this.modelIndex; this.modelIndex = modelIndex; @@ -335,10 +335,9 @@ public class TableColumn extends Object implements Serializable { * * @param identifier an identifier for this column * @see #getIdentifier - * @beaninfo - * bound: true - * description: A unique identifier for this column. */ + @BeanProperty(description + = "A unique identifier for this column.") public void setIdentifier(Object identifier) { Object old = this.identifier; this.identifier = identifier; @@ -369,10 +368,9 @@ public class TableColumn extends Object implements Serializable { * is null. * @param headerValue the new headerValue * @see #getHeaderValue - * @beaninfo - * bound: true - * description: The text to be used by the header renderer. */ + @BeanProperty(description + = "The text to be used by the header renderer.") public void setHeaderValue(Object headerValue) { Object old = this.headerValue; this.headerValue = headerValue; @@ -405,10 +403,9 @@ public class TableColumn extends Object implements Serializable { * @param headerRenderer the new headerRenderer * * @see #getHeaderRenderer - * @beaninfo - * bound: true - * description: The header renderer. */ + @BeanProperty(description + = "The header renderer.") public void setHeaderRenderer(TableCellRenderer headerRenderer) { TableCellRenderer old = this.headerRenderer; this.headerRenderer = headerRenderer; @@ -437,10 +434,9 @@ public class TableColumn extends Object implements Serializable { * * @param cellRenderer the new cellRenderer * @see #getCellRenderer - * @beaninfo - * bound: true - * description: The renderer to use for cell values. */ + @BeanProperty(description + = "The renderer to use for cell values.") public void setCellRenderer(TableCellRenderer cellRenderer) { TableCellRenderer old = this.cellRenderer; this.cellRenderer = cellRenderer; @@ -471,10 +467,9 @@ public class TableColumn extends Object implements Serializable { * * @param cellEditor the new cellEditor * @see #getCellEditor - * @beaninfo - * bound: true - * description: The editor to use for cell values. */ + @BeanProperty(description + = "The editor to use for cell values.") public void setCellEditor(TableCellEditor cellEditor){ TableCellEditor old = this.cellEditor; this.cellEditor = cellEditor; @@ -515,10 +510,9 @@ public class TableColumn extends Object implements Serializable { * @see #setMaxWidth * @see #setPreferredWidth * @see JTable#doLayout() - * @beaninfo - * bound: true - * description: The width of the column. */ + @BeanProperty(description + = "The width of the column.") public void setWidth(int width) { int old = this.width; this.width = Math.min(Math.max(width, minWidth), maxWidth); @@ -549,10 +543,9 @@ public class TableColumn extends Object implements Serializable { * @param preferredWidth the new preferred width * @see #getPreferredWidth * @see JTable#doLayout() - * @beaninfo - * bound: true - * description: The preferred width of the column. */ + @BeanProperty(description + = "The preferred width of the column.") public void setPreferredWidth(int preferredWidth) { int old = this.preferredWidth; this.preferredWidth = Math.min(Math.max(preferredWidth, minWidth), maxWidth); @@ -588,10 +581,9 @@ public class TableColumn extends Object implements Serializable { * @see #getMinWidth * @see #setPreferredWidth * @see #setMaxWidth - * @beaninfo - * bound: true - * description: The minimum width of the column. */ + @BeanProperty(description + = "The minimum width of the column.") public void setMinWidth(int minWidth) { int old = this.minWidth; this.minWidth = Math.max(Math.min(minWidth, maxWidth), 0); @@ -633,10 +625,9 @@ public class TableColumn extends Object implements Serializable { * @see #getMaxWidth * @see #setPreferredWidth * @see #setMinWidth - * @beaninfo - * bound: true - * description: The maximum width of the column. */ + @BeanProperty(description + = "The maximum width of the column.") public void setMaxWidth(int maxWidth) { int old = this.maxWidth; this.maxWidth = Math.max(minWidth, maxWidth); @@ -667,10 +658,9 @@ public class TableColumn extends Object implements Serializable { * * @param isResizable if true, resizing is allowed; otherwise false * @see #getResizable - * @beaninfo - * bound: true - * description: Whether or not this column can be resized. */ + @BeanProperty(description + = "Whether or not this column can be resized.") public void setResizable(boolean isResizable) { boolean old = this.isResizable; this.isResizable = isResizable; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java b/jdk/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java index a088bb6f082..571745be89d 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java @@ -29,6 +29,8 @@ import com.sun.beans.util.Cache; import java.security.AccessController; import java.security.PrivilegedAction; +import java.beans.JavaBean; +import java.beans.BeanProperty; import java.beans.Transient; import java.util.HashMap; import java.util.Hashtable; @@ -276,9 +278,6 @@ import sun.swing.SwingAccessor; * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. * - * @beaninfo - * attribute: isContainer false - * * @author Timothy Prinzing * @author Igor Kushnirskiy (printing support) * @see Document @@ -291,6 +290,8 @@ import sun.swing.SwingAccessor; * @see View * @see ViewFactory */ +@JavaBean(defaultProperty = "UI") +@SwingContainer(false) @SuppressWarnings("serial") // Same-version serialization only public abstract class JTextComponent extends JComponent implements Scrollable, Accessible { @@ -375,6 +376,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @since 1.4 */ + @BeanProperty(bound = false) public CaretListener[] getCaretListeners() { return listenerList.getListeners(CaretListener.class); } @@ -409,11 +411,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param doc the document to display/edit * @see #getDocument - * @beaninfo - * description: the text document model - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the text document model") public void setDocument(Document doc) { Document old = model; @@ -496,6 +496,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @return the command list */ + @BeanProperty(bound = false) public Action[] getActions() { return getUI().getEditorKit(this).getActions(); } @@ -511,10 +512,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * A PropertyChange event ("margin") is sent to all listeners. * * @param m the space between the border and the text - * @beaninfo - * description: desired space between the border and text area - * bound: true */ + @BeanProperty(description + = "desired space between the border and text area") public void setMargin(Insets m) { Insets old = margin; margin = m; @@ -576,11 +576,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param c the caret * @see #getCaret - * @beaninfo - * description: the caret used to select/navigate - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "the caret used to select/navigate") public void setCaret(Caret c) { if (caret != null) { caret.removeChangeListener(caretEvent); @@ -614,11 +612,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param h the highlighter * @see #getHighlighter - * @beaninfo - * description: object responsible for background highlights - * bound: true - * expert: true */ + @BeanProperty(expert = true, description + = "object responsible for background highlights") public void setHighlighter(Highlighter h) { if (highlighter != null) { highlighter.deinstall(this); @@ -640,10 +636,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param map the keymap * @see #getKeymap - * @beaninfo - * description: set of key event to action bindings to use - * bound: true */ + @BeanProperty(description + = "set of key event to action bindings to use") public void setKeymap(Keymap map) { Keymap old = keymap; keymap = map; @@ -679,11 +674,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @see #setTransferHandler * @see TransferHandler * @since 1.4 - * - * @beaninfo - * description: determines whether automatic drag handling is enabled - * bound: false */ + @BeanProperty(bound = false, description + = "determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) { checkDragEnabled(b); dragEnabled = b; @@ -955,6 +948,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @see TransferHandler#canImport(TransferHandler.TransferSupport) * @since 1.6 */ + @BeanProperty(bound = false) public final DropLocation getDropLocation() { return dropLocation; } @@ -1220,11 +1214,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param c the color * @see #getCaretColor - * @beaninfo - * description: the color used to render the caret - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "the color used to render the caret") public void setCaretColor(Color c) { Color old = caretColor; caretColor = c; @@ -1249,11 +1241,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param c the color * @see #getSelectionColor - * @beaninfo - * description: color used to render selection background - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "color used to render selection background") public void setSelectionColor(Color c) { Color old = selectionColor; selectionColor = c; @@ -1278,11 +1268,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param c the color * @see #getSelectedTextColor - * @beaninfo - * description: color used to render selected text - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "color used to render selected text") public void setSelectedTextColor(Color c) { Color old = selectedTextColor; selectedTextColor = c; @@ -1306,11 +1294,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param c the color * @see #getDisabledTextColor - * @beaninfo - * description: color used to render disabled text - * bound: true - * preferred: true */ + @BeanProperty(preferred = true, description + = "color used to render disabled text") public void setDisabledTextColor(Color c) { Color old = disabledTextColor; disabledTextColor = c; @@ -1535,10 +1521,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param aKey the key * @see #getFocusAccelerator - * @beaninfo - * description: accelerator character used to grab focus - * bound: true */ + @BeanProperty(description + = "accelerator character used to grab focus") public void setFocusAccelerator(char aKey) { aKey = Character.toUpperCase(aKey); char old = focusAccelerator; @@ -1632,9 +1617,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @exception IllegalArgumentException if the value supplied * for position is less than zero or greater * than the component's text length - * @beaninfo - * description: the caret position */ + @BeanProperty(bound = false, description + = "the caret position") public void setCaretPosition(int position) { Document doc = getDocument(); if (doc != null) { @@ -1672,9 +1657,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @param t the new text to be set * @see #getText * @see DefaultCaret - * @beaninfo - * description: the text of this component */ + @BeanProperty(bound = false, description + = "the text of this component") public void setText(String t) { try { Document doc = getDocument(); @@ -1724,6 +1709,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * have a valid mapping into the document for some reason * @see #setText */ + @BeanProperty(bound = false) public String getSelectedText() { String txt = null; int p0 = Math.min(caret.getDot(), caret.getMark()); @@ -1758,10 +1744,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * * @param b the boolean to be set * @see #isEditable - * @beaninfo - * description: specifies if the text can be edited - * bound: true */ + @BeanProperty(description + = "specifies if the text can be edited") public void setEditable(boolean b) { if (b != editable) { boolean oldVal = editable; @@ -1795,9 +1780,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * implementation which is where the actual selection is maintained. * * @param selectionStart the start position of the text ≥ 0 - * @beaninfo - * description: starting location of the selection. */ + @BeanProperty(bound = false, description + = "starting location of the selection.") public void setSelectionStart(int selectionStart) { /* Route through select method to enforce consistent policy * between selectionStart and selectionEnd. @@ -1828,9 +1813,9 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * implementation which is where the actual selection is maintained. * * @param selectionEnd the end position of the text ≥ 0 - * @beaninfo - * description: ending location of the selection. */ + @BeanProperty(bound = false, description + = "ending location of the selection.") public void setSelectionEnd(int selectionEnd) { /* Route through select method to enforce consistent policy * between selectionStart and selectionEnd. @@ -1946,6 +1931,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @return the preferredSize of a JViewport * whose view is this Scrollable */ + @BeanProperty(bound = false) public Dimension getPreferredScrollableViewportSize() { return getPreferredSize(); } @@ -2029,6 +2015,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @return true if a viewport should force the Scrollables * width to match its own */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportWidth() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -2050,6 +2037,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * @return true if a viewport should force the Scrollables height * to match its own */ + @BeanProperty(bound = false) public boolean getScrollableTracksViewportHeight() { Container parent = SwingUtilities.getUnwrappedParent(this); if (parent instanceof JViewport) { @@ -2484,6 +2472,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * AccessibleContext of this * JTextComponent */ + @BeanProperty(bound = false) public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { accessibleContext = new AccessibleJTextComponent(); @@ -4539,6 +4528,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A // // Overrides this method to become an active input method client. // + @BeanProperty(bound = false) public InputMethodRequests getInputMethodRequests() { if (inputMethodRequestsHandler == null) { inputMethodRequestsHandler = new InputMethodRequestsHandler(); diff --git a/jdk/src/java.desktop/share/classes/javax/swing/tree/AbstractLayoutCache.java b/jdk/src/java.desktop/share/classes/javax/swing/tree/AbstractLayoutCache.java index 3d0f4ef9d1f..23272555363 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/tree/AbstractLayoutCache.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/AbstractLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -22,12 +22,11 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing.tree; import javax.swing.event.TreeModelEvent; -import java.awt.Dimension; import java.awt.Rectangle; +import java.beans.BeanProperty; import java.util.Enumeration; /** @@ -112,11 +111,9 @@ public abstract class AbstractLayoutCache implements RowMapper { * * @param rootVisible true if the root node of the tree is to be displayed * @see #rootVisible - * @beaninfo - * bound: true - * description: Whether or not the root node - * from the TreeModel is visible. */ + @BeanProperty(description + = "Whether or not the root node from the TreeModel is visible.") public void setRootVisible(boolean rootVisible) { this.rootVisible = rootVisible; } @@ -137,10 +134,9 @@ public abstract class AbstractLayoutCache implements RowMapper { * queried for each row's height. * * @param rowHeight the height of each cell, in pixels - * @beaninfo - * bound: true - * description: The height of each cell. */ + @BeanProperty(description + = "The height of each cell.") public void setRowHeight(int rowHeight) { this.rowHeight = rowHeight; } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellEditor.java b/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellEditor.java index 0fe4e7eb1cd..8f76fe2952c 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellEditor.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellEditor.java @@ -22,7 +22,6 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing.tree; import javax.swing.*; @@ -31,6 +30,7 @@ import javax.swing.event.*; import javax.swing.plaf.FontUIResource; import java.awt.*; import java.awt.event.*; +import java.beans.BeanProperty; import java.util.EventObject; /** @@ -592,12 +592,9 @@ public class DefaultTreeCellEditor implements ActionListener, TreeCellEditor, * @param border the border to be rendered for this component * @see Border * @see CompoundBorder - * @beaninfo - * bound: true - * preferred: true - * attribute: visualUpdate true - * description: The component's border. */ + @BeanProperty(preferred = true, visualUpdate = true, description + = "The component's border.") public void setBorder(Border border) { super.setBorder(border); this.border = border; diff --git a/jdk/src/java.desktop/share/classes/javax/swing/tree/VariableHeightLayoutCache.java b/jdk/src/java.desktop/share/classes/javax/swing/tree/VariableHeightLayoutCache.java index 470f07d930a..fea3a16131d 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/tree/VariableHeightLayoutCache.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/VariableHeightLayoutCache.java @@ -22,11 +22,11 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package javax.swing.tree; import javax.swing.event.TreeModelEvent; import java.awt.Rectangle; +import java.beans.BeanProperty; import java.util.Enumeration; import java.util.Hashtable; import java.util.NoSuchElementException; @@ -103,10 +103,9 @@ public class VariableHeightLayoutCache extends AbstractLayoutCache { * Sets the TreeModel that will provide the data. * * @param newModel the TreeModel that is to provide the data - * @beaninfo - * bound: true - * description: The TreeModel that will provide the data. */ + @BeanProperty(description + = "The TreeModel that will provide the data.") public void setModel(TreeModel newModel) { super.setModel(newModel); rebuild(false); @@ -118,11 +117,9 @@ public class VariableHeightLayoutCache extends AbstractLayoutCache { * * @param rootVisible true if the root node of the tree is to be displayed * @see #rootVisible - * @beaninfo - * bound: true - * description: Whether or not the root node - * from the TreeModel is visible. */ + @BeanProperty(description + = "Whether or not the root node from the TreeModel is visible.") public void setRootVisible(boolean rootVisible) { if(isRootVisible() != rootVisible && root != null) { if(rootVisible) { @@ -151,10 +148,9 @@ public class VariableHeightLayoutCache extends AbstractLayoutCache { * queried for each row's height. * * @param rowHeight the height of each cell, in pixels - * @beaninfo - * bound: true - * description: The height of each cell. */ + @BeanProperty(description + = "The height of each cell.") public void setRowHeight(int rowHeight) { if(rowHeight != getRowHeight()) { super.setRowHeight(rowHeight); From 279a05d2b2fa486d3127b854d70c51b5248aa711 Mon Sep 17 00:00:00 2001 From: Prasanta Sadhukhan Date: Mon, 12 Oct 2015 15:28:03 +0300 Subject: [PATCH 10/17] 8072682: getBounds call on graphics.getDeviceConfiguration() returning cached information Reviewed-by: serb, flar --- .../image/BufferedImageGraphicsConfig.java | 5 +- .../java/awt/Graphics2D/DeviceBounds.java | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 jdk/test/java/awt/Graphics2D/DeviceBounds.java diff --git a/jdk/src/java.desktop/share/classes/sun/awt/image/BufferedImageGraphicsConfig.java b/jdk/src/java.desktop/share/classes/sun/awt/image/BufferedImageGraphicsConfig.java index dd831a65bf9..bddb83f6999 100644 --- a/jdk/src/java.desktop/share/classes/sun/awt/image/BufferedImageGraphicsConfig.java +++ b/jdk/src/java.desktop/share/classes/sun/awt/image/BufferedImageGraphicsConfig.java @@ -67,7 +67,6 @@ public class BufferedImageGraphicsConfig GraphicsDevice gd; ColorModel model; Raster raster; - int width, height; public BufferedImageGraphicsConfig(BufferedImage bufImg, Component comp) { if (comp == null) { @@ -78,8 +77,6 @@ public class BufferedImageGraphicsConfig } this.model = bufImg.getColorModel(); this.raster = bufImg.getRaster().createCompatibleWritableRaster(1, 1); - this.width = bufImg.getWidth(); - this.height = bufImg.getHeight(); } /** @@ -168,6 +165,6 @@ public class BufferedImageGraphicsConfig } public Rectangle getBounds() { - return new Rectangle(0, 0, width, height); + return new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE); } } diff --git a/jdk/test/java/awt/Graphics2D/DeviceBounds.java b/jdk/test/java/awt/Graphics2D/DeviceBounds.java new file mode 100644 index 00000000000..7559b7d8a57 --- /dev/null +++ b/jdk/test/java/awt/Graphics2D/DeviceBounds.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +import java.awt.*; +import java.awt.image.BufferedImage; + +/** + * @test + * @bug 8072682 + * @summary Graphics.getDeviceConfiguration().getBounds returns wrong width/height + * @run main DeviceBounds + */ +public class DeviceBounds { + public static void main(String[] args) { + // NB: all images have the same type + BufferedImage[] images = new BufferedImage[] { + new BufferedImage(200, 200, BufferedImage.TYPE_3BYTE_BGR), + new BufferedImage(400, 400, BufferedImage.TYPE_3BYTE_BGR), + new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR) + }; + int count = 0; + for (BufferedImage i : images) { + Graphics2D g = i.createGraphics(); + Rectangle bounds[] = new Rectangle[images.length]; + bounds[count] = g.getDeviceConfiguration().getBounds(); + System.out.println(bounds[count]); + + g.dispose(); + if (bounds[count].width != Integer.MAX_VALUE) { + throw new RuntimeException("Wrong getBounds"); + } + count++; + } + } +} From f07facd339f6ab29d10ae29e86c22b31977b55e0 Mon Sep 17 00:00:00 2001 From: Sergey Bylokhov Date: Mon, 12 Oct 2015 16:26:58 +0300 Subject: [PATCH 11/17] 8136858: Examine the usage of ThreadGroup.stop() in sun.awt.AppContext Reviewed-by: alexsch, chegar --- .../share/classes/sun/awt/AppContext.java | 5 +- .../ApplicationThreadsStop.java | 76 +++++++++++++++++++ .../ApplicationThreadsStop/java.policy | 5 ++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java create mode 100644 jdk/test/java/awt/AppContext/ApplicationThreadsStop/java.policy diff --git a/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java b/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java index db0659eb587..9023251171d 100644 --- a/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java +++ b/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java @@ -525,7 +525,10 @@ public final class AppContext { } // Then, we stop any remaining Threads - this.threadGroup.stop(); + AccessController.doPrivileged((PrivilegedAction) () -> { + threadGroup.stop(); + return null; + }); // Next, we sleep 10ms at a time, waiting for all of the active // Threads in the ThreadGroup to die. diff --git a/jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java b/jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java new file mode 100644 index 00000000000..0819c5e905e --- /dev/null +++ b/jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.AWTException; +import java.awt.Frame; +import java.awt.Robot; + +import sun.awt.AppContext; +import sun.awt.SunToolkit; + +/** + * @test + * @bug 8136858 + * @modules java.desktop/sun.awt + * @run main/othervm/java.security.policy=java.policy -Djava.security.manager ApplicationThreadsStop + */ +public final class ApplicationThreadsStop implements Runnable { + + private static AppContext contextToDispose; + private static Thread thread; + + public static void main(final String[] args) throws Exception { + ThreadGroup tg = new ThreadGroup("TestThreadGroup"); + Thread t = new Thread(tg, new ApplicationThreadsStop()); + t.start(); + t.join(); + contextToDispose.dispose(); + // wait for appcontext to be destroyed + Thread.sleep(10000); + if(thread.isAlive()){ + throw new RuntimeException("Thread is alive"); + } + } + + @Override + public void run() { + contextToDispose = SunToolkit.createNewAppContext(); + Frame f = new Frame(); + f.setSize(300, 300); + f.setLocationRelativeTo(null); + f.setVisible(true); + thread = new Thread(() -> { + while(true); + }); + thread.start(); + sync(); + } + + private static void sync() { + try { + new Robot().waitForIdle(); + } catch (AWTException e) { + throw new RuntimeException(e); + } + } +} diff --git a/jdk/test/java/awt/AppContext/ApplicationThreadsStop/java.policy b/jdk/test/java/awt/AppContext/ApplicationThreadsStop/java.policy new file mode 100644 index 00000000000..0ca7756397b --- /dev/null +++ b/jdk/test/java/awt/AppContext/ApplicationThreadsStop/java.policy @@ -0,0 +1,5 @@ +grant { + permission java.lang.RuntimePermission "accessClassInPackage.sun.awt"; + permission java.awt.AWTPermission "createRobot"; + permission java.util.PropertyPermission "AWT.EventQueueClass", "read"; +}; From 059474a6eeb08560d8fb63c4f5c5b8d9dc721a32 Mon Sep 17 00:00:00 2001 From: Jayathirth D V Date: Tue, 13 Oct 2015 14:59:44 +0300 Subject: [PATCH 12/17] 8066904: NullPointerException when calling ImageIO.read(InputStream) with corrupt BMP Reviewed-by: serb, prr --- .../imageio/plugins/bmp/BMPImageReader.java | 11 ++++ .../plugins/common/iio-plugin.properties | 1 + .../javax/imageio/plugins/bmp/Bug8066904.java | 65 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 jdk/test/javax/imageio/plugins/bmp/Bug8066904.java diff --git a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java index ccfc4187a83..27a935d715a 100644 --- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java +++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java @@ -290,6 +290,8 @@ public class BMPImageReader extends ImageReader implements BMPConstants { imageType = VERSION_2_8_BIT; } else if (bitsPerPixel == 24) { imageType = VERSION_2_24_BIT; + } else { + throw new IIOException(I18N.getString("BMPImageReader8")); } // Read in the palette @@ -364,6 +366,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants { metadata.redMask = redMask; metadata.greenMask = greenMask; metadata.blueMask = blueMask; + } else { + throw new + IIOException(I18N.getString("BMPImageReader8")); } metadata.bmpVersion = VERSION_3; @@ -375,6 +380,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants { imageType = VERSION_3_NT_16_BIT; } else if (bitsPerPixel == 32) { imageType = VERSION_3_NT_32_BIT; + } else { + throw new + IIOException(I18N.getString("BMPImageReader8")); } // BitsField encoding @@ -493,6 +501,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants { greenMask = 0x0000FF00; blueMask = 0x000000FF; } + } else { + throw new + IIOException(I18N.getString("BMPImageReader8")); } metadata.redMask = redMask; diff --git a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/common/iio-plugin.properties b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/common/iio-plugin.properties index 85b108f8e3b..181446bca21 100644 --- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/common/iio-plugin.properties +++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/common/iio-plugin.properties @@ -23,6 +23,7 @@ BMPImageReader4=No ImageIO-style reader is found for BMPImageReader5=Input has not been set. BMPImageReader6=Unable to read the image header. BMPImageReader7=Invalid bitmap offset. +BMPImageReader8=Invalid bits per pixel in image header. BMPImageWriter0=Output is not an ImageOutputStream. BMPImageWriter1=The image region to be encoded is empty. BMPImageWriter2=Only 1 or 3 band image is encoded. diff --git a/jdk/test/javax/imageio/plugins/bmp/Bug8066904.java b/jdk/test/javax/imageio/plugins/bmp/Bug8066904.java new file mode 100644 index 00000000000..82bcf202db9 --- /dev/null +++ b/jdk/test/javax/imageio/plugins/bmp/Bug8066904.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8066904 + * @summary Test verifies whether Bits per Pixel in BMP + * Header is corrupted or not + * @run main Bug8066904 + */ + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import javax.imageio.ImageIO; + +public class Bug8066904 { + + public static void main(String[] args) throws IOException { + // corrupted byte array with improper Bits per pixel in header + byte[] corruptedBmp = { (byte) 0x42, (byte) 0x4d, (byte) 0x7e, + (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x3e, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x28, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x64, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x64, + (byte) 0x00, (byte) 0x40, (byte) 0x06, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, + (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0xff, + (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, + (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, + (byte) 0xff }; + + /** if IOException is caught then test will + * pass otherwise throws a different exception. + */ + try { + ImageIO.read(new ByteArrayInputStream(corruptedBmp)); + } catch(Exception ex) { + if (!(ex instanceof IOException)) + throw ex; + } + } +} From 176f41a3d48e4bb5d5b84b528528275b6a84bdbd Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Mon, 19 Oct 2015 13:48:32 -0700 Subject: [PATCH 13/17] 8139925: Problem list LFMultiThreadCachingTest.java on windows Reviewed-by: rriggs, chegar --- jdk/test/ProblemList.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 19e469d8942..4c3b8487363 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -133,6 +133,9 @@ java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java generic-all # 8029891 java/lang/ClassLoader/deadlock/GetResource.java generic-all +# 8131129 +java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java windows-all + ############################################################################ # jdk_instrument From efc3a113cdabb3810eafd88495688b427307fa2a Mon Sep 17 00:00:00 2001 From: Anthony Scarpino Date: Mon, 19 Oct 2015 17:26:01 -0700 Subject: [PATCH 14/17] 8139860: Add ucrypto/TestRSA.java to ProblemList: Message is larger than modulus Reviewed-by: xuelei --- jdk/test/ProblemList.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 4c3b8487363..90efdb301e0 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -300,6 +300,9 @@ sun/security/provider/SecureRandom/StrongSecureRandom.java macosx-10.10 # 8074580 sun/security/pkcs11/rsa/TestKeyPairGenerator.java generic-all +# 8139860 +com/oracle/security/ucrypto/TestRSA.java solaris-all + ############################################################################ # jdk_sound From 274ee0ec5b9df1afdfcb377fff3e289f0ae32351 Mon Sep 17 00:00:00 2001 From: Anthony Scarpino Date: Mon, 19 Oct 2015 17:35:18 -0700 Subject: [PATCH 15/17] 8133151: Preferred provider configuration for JCE Reviewed-by: valeriep --- jdk/make/gendata/Gendata-java.base.gmk | 2 +- .../makejavasecurity/MakeJavaSecurity.java | 16 +- .../security/AlgorithmParameterGenerator.java | 7 + .../java/security/AlgorithmParameters.java | 9 +- .../classes/java/security/KeyFactory.java | 9 +- .../java/security/KeyPairGenerator.java | 7 + .../share/classes/java/security/KeyStore.java | 7 + .../classes/java/security/MessageDigest.java | 7 + .../share/classes/java/security/Policy.java | 7 + .../classes/java/security/SecureRandom.java | 9 +- .../classes/java/security/Signature.java | 7 + .../java/security/cert/CertPathBuilder.java | 9 +- .../java/security/cert/CertPathValidator.java | 9 +- .../classes/java/security/cert/CertStore.java | 9 +- .../security/cert/CertificateFactory.java | 9 +- .../share/classes/javax/crypto/Cipher.java | 7 + .../javax/crypto/ExemptionMechanism.java | 9 +- .../classes/javax/crypto/KeyAgreement.java | 9 +- .../classes/javax/crypto/KeyGenerator.java | 9 +- .../share/classes/javax/crypto/Mac.java | 9 +- .../javax/crypto/SecretKeyFactory.java | 9 +- .../javax/net/ssl/KeyManagerFactory.java | 7 + .../classes/javax/net/ssl/SSLContext.java | 7 + .../javax/net/ssl/TrustManagerFactory.java | 7 + .../security/auth/login/Configuration.java | 7 + .../sun/security/jca/ProviderList.java | 212 +++++++++++++++++- .../share/conf/security/java.security | 25 +++ .../classes/javax/security/sasl/Sasl.java | 14 ++ .../javax/smartcardio/TerminalFactory.java | 9 +- .../xml/crypto/dsig/TransformService.java | 9 +- .../xml/crypto/dsig/XMLSignatureFactory.java | 9 +- .../crypto/dsig/keyinfo/KeyInfoFactory.java | 16 +- 32 files changed, 465 insertions(+), 32 deletions(-) diff --git a/jdk/make/gendata/Gendata-java.base.gmk b/jdk/make/gendata/Gendata-java.base.gmk index c0ee693f730..d94ec3404c0 100644 --- a/jdk/make/gendata/Gendata-java.base.gmk +++ b/jdk/make/gendata/Gendata-java.base.gmk @@ -70,7 +70,7 @@ $(GENDATA_JAVA_SECURITY): $(BUILD_TOOLS) $(GENDATA_JAVA_SECURITY_SRC) $(RESTRICT $(ECHO) "Generating java.security" $(MKDIR) -p $(@D) $(TOOL_MAKEJAVASECURITY) $(GENDATA_JAVA_SECURITY_SRC) $@ $(OPENJDK_TARGET_OS) \ - $(RESTRICTED_PKGS_SRC) || exit 1 + $(OPENJDK_TARGET_CPU_ARCH) $(RESTRICTED_PKGS_SRC) || exit 1 TARGETS += $(GENDATA_JAVA_SECURITY) diff --git a/jdk/make/src/classes/build/tools/makejavasecurity/MakeJavaSecurity.java b/jdk/make/src/classes/build/tools/makejavasecurity/MakeJavaSecurity.java index d5c6e14c7b1..46f8ce9af9d 100644 --- a/jdk/make/src/classes/build/tools/makejavasecurity/MakeJavaSecurity.java +++ b/jdk/make/src/classes/build/tools/makejavasecurity/MakeJavaSecurity.java @@ -50,19 +50,21 @@ public class MakeJavaSecurity { public static void main(String[] args) throws Exception { - if (args.length < 3) { + if (args.length < 4) { System.err.println("Usage: java MakeJavaSecurity " + "[input java.security file name] " + "[output java.security file name] " + "[openjdk target os] " + + "[openjdk target cpu architecture]" + "[more restricted packages file name?]"); - System.exit(1); + + System.exit(1); } // more restricted packages List extraLines; - if (args.length == 4) { - extraLines = Files.readAllLines(Paths.get(args[3])); + if (args.length == 5) { + extraLines = Files.readAllLines(Paths.get(args[4])); } else { extraLines = Collections.emptyList(); } @@ -96,7 +98,11 @@ public class MakeJavaSecurity { mode = 0; iter.remove(); } else if (line.startsWith("#ifdef ")) { - mode = line.endsWith(args[2])?1:2; + if (line.indexOf('-') > 0) { + mode = line.endsWith(args[2]+"-"+args[3]) ? 1 : 2; + } else { + mode = line.endsWith(args[2]) ? 1 : 2; + } iter.remove(); } else if (line.startsWith("#ifndef ")) { mode = line.endsWith(args[2])?2:1; diff --git a/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java b/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java index 5c03453d8fd..36b2a65cbfa 100644 --- a/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java +++ b/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java @@ -138,6 +138,13 @@ public class AlgorithmParameterGenerator { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the algorithm this * parameter generator is associated with. * See the AlgorithmParameterGenerator section in the diff --git a/jdk/src/java.base/share/classes/java/security/KeyFactory.java b/jdk/src/java.base/share/classes/java/security/KeyFactory.java index 8e761ff41f7..76076cea2f2 100644 --- a/jdk/src/java.base/share/classes/java/security/KeyFactory.java +++ b/jdk/src/java.base/share/classes/java/security/KeyFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -153,6 +153,13 @@ public class KeyFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the requested key algorithm. * See the KeyFactory section in the diff --git a/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java b/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java index 277231b568d..246f140b435 100644 --- a/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java +++ b/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java @@ -195,6 +195,13 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard string name of the algorithm. * See the KeyPairGenerator section in the diff --git a/jdk/src/java.base/share/classes/java/security/KeyStore.java b/jdk/src/java.base/share/classes/java/security/KeyStore.java index 6ab121ea629..40df29cdd6c 100644 --- a/jdk/src/java.base/share/classes/java/security/KeyStore.java +++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java @@ -841,6 +841,13 @@ public class KeyStore { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the type of keystore. * See the KeyStore section in the diff --git a/jdk/src/java.base/share/classes/java/security/MessageDigest.java b/jdk/src/java.base/share/classes/java/security/MessageDigest.java index 5a58f0997d0..0892140c581 100644 --- a/jdk/src/java.base/share/classes/java/security/MessageDigest.java +++ b/jdk/src/java.base/share/classes/java/security/MessageDigest.java @@ -146,6 +146,13 @@ public abstract class MessageDigest extends MessageDigestSpi { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the algorithm requested. * See the MessageDigest section in the diff --git a/jdk/src/java.base/share/classes/java/security/Policy.java b/jdk/src/java.base/share/classes/java/security/Policy.java index 1351ed7db10..9d02d76f8d8 100644 --- a/jdk/src/java.base/share/classes/java/security/Policy.java +++ b/jdk/src/java.base/share/classes/java/security/Policy.java @@ -355,6 +355,13 @@ public abstract class Policy { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the specified Policy type. See the Policy section in the * diff --git a/jdk/src/java.base/share/classes/java/security/SecureRandom.java b/jdk/src/java.base/share/classes/java/security/SecureRandom.java index feae08b90c9..2f8d734ac00 100644 --- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java +++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 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 @@ -268,6 +268,13 @@ public class SecureRandom extends java.util.Random { * This self-seeding will not occur if {@code setSeed} was * previously called. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the RNG algorithm. * See the SecureRandom section in the diff --git a/jdk/src/java.base/share/classes/java/security/Signature.java b/jdk/src/java.base/share/classes/java/security/Signature.java index 75e318c8b94..73fb85c8566 100644 --- a/jdk/src/java.base/share/classes/java/security/Signature.java +++ b/jdk/src/java.base/share/classes/java/security/Signature.java @@ -203,6 +203,13 @@ public abstract class Signature extends SignatureSpi { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the algorithm requested. * See the Signature section in the diff --git a/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java b/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java index 307cbec4924..8cd1ec09d0c 100644 --- a/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java +++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -142,6 +142,13 @@ public class CertPathBuilder { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the requested {@code CertPathBuilder} * algorithm. See the CertPathBuilder section in the diff --git a/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java b/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java index 857fa2faa8c..3a22c37cb04 100644 --- a/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java +++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -143,6 +143,13 @@ public class CertPathValidator { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the name of the requested {@code CertPathValidator} * algorithm. See the CertPathValidator section in the diff --git a/jdk/src/java.base/share/classes/java/security/cert/CertStore.java b/jdk/src/java.base/share/classes/java/security/cert/CertStore.java index 79835d8ba3b..cb281633929 100644 --- a/jdk/src/java.base/share/classes/java/security/cert/CertStore.java +++ b/jdk/src/java.base/share/classes/java/security/cert/CertStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -201,6 +201,13 @@ public class CertStore { * Note that the specified {@code CertStoreParameters} object is * cloned. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the name of the requested {@code CertStore} type. * See the CertStore section in the diff --git a/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java b/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java index f45866d1b74..735c2df21fc 100644 --- a/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java +++ b/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -163,6 +163,13 @@ public class CertificateFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the name of the requested certificate type. * See the CertificateFactory section in the diff --git a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java index ed6f4e392bd..fde8cb491cf 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java +++ b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java @@ -478,6 +478,13 @@ public class Cipher { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param transformation the name of the transformation, e.g., * DES/CBC/PKCS5Padding. * See the Cipher section in the Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested exemption * mechanism. * See the ExemptionMechanism section in the diff --git a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java index 98cfcdabc74..a2c951e0275 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java +++ b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -150,6 +150,13 @@ public class KeyAgreement { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested key agreement * algorithm. * See the KeyAgreement section in the Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested key algorithm. * See the KeyGenerator section in the diff --git a/jdk/src/java.base/share/classes/javax/crypto/Mac.java b/jdk/src/java.base/share/classes/javax/crypto/Mac.java index 9f85e7aecb2..2c5ba4b6aa2 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/Mac.java +++ b/jdk/src/java.base/share/classes/javax/crypto/Mac.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -152,6 +152,13 @@ public class Mac implements Cloneable { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested MAC algorithm. * See the Mac section in the diff --git a/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java b/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java index 2be70598dd0..9dd815149b9 100644 --- a/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java +++ b/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -137,6 +137,13 @@ public class SecretKeyFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested secret-key * algorithm. * See the SecretKeyFactory section in the Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested algorithm. * See the diff --git a/jdk/src/java.base/share/classes/javax/net/ssl/SSLContext.java b/jdk/src/java.base/share/classes/javax/net/ssl/SSLContext.java index df3af8b4602..1ed527569a6 100644 --- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLContext.java +++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLContext.java @@ -136,6 +136,13 @@ public class SSLContext { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param protocol the standard name of the requested protocol. * See the SSLContext section in the diff --git a/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java b/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java index 0567d99e9c3..4e9bdf2b7e0 100644 --- a/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java +++ b/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java @@ -130,6 +130,13 @@ public class TrustManagerFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the standard name of the requested trust management * algorithm. See the diff --git a/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java b/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java index c0b1865ee0b..b5a2a2cd107 100644 --- a/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java +++ b/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java @@ -311,6 +311,13 @@ public abstract class Configuration { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the specified Configuration type. See the Configuration * section in the diff --git a/jdk/src/java.base/share/classes/sun/security/jca/ProviderList.java b/jdk/src/java.base/share/classes/sun/security/jca/ProviderList.java index f8dfed64e6f..9f9c86d99e2 100644 --- a/jdk/src/java.base/share/classes/sun/security/jca/ProviderList.java +++ b/jdk/src/java.base/share/classes/sun/security/jca/ProviderList.java @@ -27,8 +27,11 @@ package sun.security.jca; import java.util.*; -import java.security.*; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.Provider; import java.security.Provider.Service; +import java.security.Security; /** * List of Providers. Used to represent the provider preferences. @@ -65,6 +68,9 @@ public final class ProviderList { // constant for an ProviderList with no elements static final ProviderList EMPTY = new ProviderList(PC0, true); + // list of all jdk.security.provider.preferred entries + static private PreferredList preferredPropList = null; + // dummy provider object to use during initialization // used to avoid explicit null checks in various places private static final Provider EMPTY_PROVIDER = @@ -162,11 +168,10 @@ public final class ProviderList { */ private ProviderList() { List configList = new ArrayList<>(); - for (int i = 1; true; i++) { - String entry = Security.getProperty("security.provider." + i); - if (entry == null) { - break; - } + String entry; + int i = 1; + + while ((entry = Security.getProperty("security.provider." + i)) != null) { entry = entry.trim(); if (entry.length() == 0) { System.err.println("invalid entry for " + @@ -187,10 +192,36 @@ public final class ProviderList { if (configList.contains(config) == false) { configList.add(config); } + i++; } configs = configList.toArray(PC0); + + // Load config entries for use when getInstance is called + entry = Security.getProperty("jdk.security.provider.preferred"); + if (entry != null && (entry = entry.trim()).length() > 0) { + String[] entries = entry.split(","); + if (ProviderList.preferredPropList == null) { + ProviderList.preferredPropList = new PreferredList(); + } + + for (String e : entries) { + i = e.indexOf(':'); + if (i < 0) { + if (debug != null) { + debug.println("invalid preferred entry skipped. " + + "Missing colon delimiter \"" + e + "\""); + } + continue; + } + ProviderList.preferredPropList.add(new PreferredEntry( + e.substring(0, i).trim(), e.substring(i + 1).trim())); + } + } + if (debug != null) { debug.println("provider configuration: " + configList); + debug.println("config configuration: " + + ProviderList.preferredPropList); } } @@ -327,7 +358,22 @@ public final class ProviderList { * algorithm. */ public Service getService(String type, String name) { - for (int i = 0; i < configs.length; i++) { + ArrayList pList = null; + int i; + + // Preferred provider list + if (preferredPropList != null && + (pList = preferredPropList.getAll(type, name)) != null) { + for (i = 0; i < pList.size(); i++) { + Provider p = getProvider(pList.get(i).provider); + Service s = p.getService(type, name); + if (s != null) { + return s; + } + } + } + + for (i = 0; i < configs.length; i++) { Provider p = getProvider(i); Service s = p.getService(type, name); if (s != null) { @@ -394,7 +440,11 @@ public final class ProviderList { private List services; // index into config[] of the next provider we need to query - private int providerIndex; + private int providerIndex = 0; + + // Matching preferred provider list for this ServiceList + ArrayList preferredList = null; + private int preferredIndex = 0; ServiceList(String type, String algorithm) { this.type = type; @@ -421,6 +471,14 @@ public final class ProviderList { } private Service tryGet(int index) { + Provider p; + + // If preferred providers are configured, check for matches with + // the requested service. + if (preferredPropList != null && preferredList == null) { + preferredList = preferredPropList.getAll(this); + } + while (true) { if ((index == 0) && (firstService != null)) { return firstService; @@ -430,8 +488,27 @@ public final class ProviderList { if (providerIndex >= configs.length) { return null; } - // check all algorithms in this provider before moving on - Provider p = getProvider(providerIndex++); + + // If there were matches with a preferred provider, iterate + // through the list first before going through the + // ordered list (java.security.provider.#) + if (preferredList != null && + preferredIndex < preferredList.size()) { + PreferredEntry entry = preferredList.get(preferredIndex++); + // Look for the provider name in the PreferredEntry + p = getProvider(entry.provider); + if (p == null) { + if (debug != null) { + debug.println("No provider found with name: " + + entry.provider); + } + continue; + } + } else { + // check all algorithms in this provider before moving on + p = getProvider(providerIndex++); + } + if (type != null) { // simple lookup Service s = p.getService(type, algorithm); @@ -502,4 +579,119 @@ public final class ProviderList { } } + // Provider list defined by jdk.security.provider.preferred entry + static final class PreferredList { + ArrayList list = new ArrayList(); + + /* + * Return a list of all preferred entries that match the passed + * ServiceList. + */ + ArrayList getAll(ServiceList s) { + if (s.ids == null) { + return getAll(s.type, s.algorithm); + + } + + ArrayList l = new ArrayList(); + for (ServiceId id : s.ids) { + implGetAll(l, id.type, id.algorithm); + } + + return l; + } + + /* + * Return a list of all preferred entries that match the passed + * type and algorithm. + */ + ArrayList getAll(String type, String algorithm) { + ArrayList l = new ArrayList(); + implGetAll(l, type, algorithm); + return l; + } + + /* + * Compare each preferred entry against the passed type and + * algorithm, putting any matches in the passed ArrayList. + */ + private void implGetAll(ArrayList l, String type, + String algorithm) { + PreferredEntry e; + + for (int i = 0; i < size(); i++) { + e = list.get(i); + if (e.match(type, algorithm)) { + l.add(e); + } + } + } + + public PreferredEntry get(int i) { + return list.get(i); + } + + public int size() { + return list.size(); + } + + public boolean add(PreferredEntry e) { + return list.add(e); + } + + public String toString() { + String s = ""; + for (PreferredEntry e: list) { + s += e.toString(); + } + return s; + } + } + + // Individual preferred property entry from jdk.security.provider.preferred + private class PreferredEntry { + String type = null; + String algorithm; + String provider; + + PreferredEntry(String t, String p) { + int i = t.indexOf('.'); + if (i > 0) { + type = t.substring(0, i); + algorithm = t.substring(i + 1); + } else { + algorithm = t; + } + + provider = p; + } + + boolean match(String t, String a) { + if (debug != null) { + debug.println("Config match: " + toString() + " == [" + t + + ", " + a + "]"); + } + + // Compare service type if configured + if (type != null && type.compareToIgnoreCase(t) != 0) { + return false; + } + + // Compare the algorithm string. + if (a.compareToIgnoreCase(algorithm) == 0) { + if (debug != null) { + debug.println("Config entry found: " + toString()); + } + return true; + } + + // No match + return false; + } + + public String toString() { + return "[" + type + ", " + algorithm + " : " + provider + "] "; + } + } + } diff --git a/jdk/src/java.base/share/conf/security/java.security b/jdk/src/java.base/share/conf/security/java.security index 4523ddcd226..6809cb4c952 100644 --- a/jdk/src/java.base/share/conf/security/java.security +++ b/jdk/src/java.base/share/conf/security/java.security @@ -90,6 +90,31 @@ security.provider.tbd=apple.security.AppleProvider security.provider.tbd=sun.security.pkcs11.SunPKCS11 #endif +# +# A list of preferred providers for specific algorithms. These providers will +# be searched for matching algorithms before the list of registered providers. +# Entries containing errors (parsing, etc) will be ignored. Use the +# -Djava.security.debug=jca property to debug these errors. +# +# The property is a comma-separated list of serviceType.algorithm:provider +# entries. The serviceType (example: "MessageDigest") is optional, and if +# not specified, the algorithm applies to all service types that support it. +# The algorithm is the standard algorithm name or transformation. +# Transformations can be specified in their full standard name +# (ex: AES/CBC/PKCS5Padding), or as partial matches (ex: AES, AES/CBC). +# The provider is the name of the provider. Any provider that does not +# also appear in the registered list will be ignored. +# +# Example: +# jdk.security.provider.preferred=AES/GCM/NoPadding:SunJCE, \ +# MessageDigest.SHA-256:SUN +#ifdef solaris-sparc +jdk.security.provider.preferred=AES:SunJCE, SHA-256:SUN, SHA-384:SUN, SHA-512:SUN +#endif +#ifdef solaris-x86 +jdk.security.provider.preferred=AES:SunJCE, RSA:SunRsaSign +#endif + # # Sun Provider SecureRandom seed source. diff --git a/jdk/src/java.security.sasl/share/classes/javax/security/sasl/Sasl.java b/jdk/src/java.security.sasl/share/classes/javax/security/sasl/Sasl.java index 66bdb7ef86a..aaeaae4c1ae 100644 --- a/jdk/src/java.security.sasl/share/classes/javax/security/sasl/Sasl.java +++ b/jdk/src/java.security.sasl/share/classes/javax/security/sasl/Sasl.java @@ -310,6 +310,13 @@ public class Sasl { * for information about how to install and configure security service * providers. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param mechanisms The non-null list of mechanism names to try. Each is the * IANA-registered name of a SASL mechanism. (e.g. "GSSAPI", "CRAM-MD5"). * @param authorizationId The possibly null protocol-dependent @@ -452,6 +459,13 @@ public class Sasl { * for information about how to install and configure security * service providers. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param mechanism The non-null mechanism name. It must be an * IANA-registered name of a SASL mechanism. (e.g. "GSSAPI", "CRAM-MD5"). * @param protocol The non-null string name of the protocol for which diff --git a/jdk/src/java.smartcardio/share/classes/javax/smartcardio/TerminalFactory.java b/jdk/src/java.smartcardio/share/classes/javax/smartcardio/TerminalFactory.java index b04d556b452..f83bc78f53e 100644 --- a/jdk/src/java.smartcardio/share/classes/javax/smartcardio/TerminalFactory.java +++ b/jdk/src/java.smartcardio/share/classes/javax/smartcardio/TerminalFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -229,6 +229,13 @@ public final class TerminalFactory { * specified parameters Object. The type of parameters * needed may vary between different types of TerminalFactorys. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param type the type of the requested TerminalFactory * @param params the parameters to pass to the TerminalFactorySpi * implementation, or null if no parameters are needed diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformService.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformService.java index d7793da59cb..84212c45c90 100644 --- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformService.java +++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -136,6 +136,13 @@ public abstract class TransformService implements Transform { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param algorithm the URI of the algorithm * @param mechanismType the type of the XML processing mechanism and * representation diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java index f776bf322b5..def0a5d013f 100644 --- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java +++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -173,6 +173,13 @@ public abstract class XMLSignatureFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param mechanismType the type of the XML processing mechanism and * representation. See the diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java index a9465f79330..beaa1820e9e 100644 --- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java +++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -129,6 +129,13 @@ public abstract class KeyInfoFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @param mechanismType the type of the XML processing mechanism and * representation. See the @@ -263,6 +270,13 @@ public abstract class KeyInfoFactory { *

    Note that the list of registered providers may be retrieved via * the {@link Security#getProviders() Security.getProviders()} method. * + * @implNote + * The JDK Reference Implementation additionally uses the + * {@code jdk.security.provider.preferred} property to determine + * the preferred provider order for the specified algorithm. This + * may be different than the order of providers returned by + * {@link Security#getProviders() Security.getProviders()}. + * * @return a new KeyInfoFactory * @throws NoSuchMechanismException if no Provider supports a * KeyInfoFactory implementation for the DOM mechanism From 0c9cabae96160609629b9609f4b178759b38216f Mon Sep 17 00:00:00 2001 From: Yuka Kamiya Date: Tue, 20 Oct 2015 19:34:04 +0900 Subject: [PATCH 16/17] 8072600: Unicode 8 support Reviewed-by: okutsu --- .../CharacterData00.java.template | 763 ++++-- .../CharacterData01.java.template | 104 +- jdk/make/data/unicodedata/PropList.txt | 66 +- jdk/make/data/unicodedata/Scripts.txt | 180 +- jdk/make/data/unicodedata/SpecialCasing.txt | 4 +- jdk/make/data/unicodedata/UnicodeData.txt | 2161 ++++++++++++++++- jdk/make/data/unicodedata/VERSION | 2 +- .../share/classes/java/lang/Character.java | 547 +++-- .../share/classes/sun/text/resources/nfc.icu | Bin 34464 -> 34624 bytes .../share/classes/sun/text/resources/nfkc.icu | Bin 53504 -> 53552 bytes .../classes/sun/text/resources/nfkc_cf.icu | Bin 50288 -> 51040 bytes .../classes/sun/text/resources/ubidi.icu | Bin 22976 -> 23312 bytes .../classes/sun/text/resources/uprops.icu | Bin 113360 -> 117680 bytes .../classes/java/awt/font/NumericShaper.java | 64 +- jdk/test/java/lang/Character/CheckProp.java | 2 +- jdk/test/java/lang/Character/CheckScript.java | 2 +- jdk/test/java/lang/Character/PropList.txt | 66 +- .../lang/Character/PropertyValueAliases.txt | 57 +- jdk/test/java/lang/Character/Scripts.txt | 180 +- 19 files changed, 3444 insertions(+), 754 deletions(-) diff --git a/jdk/make/data/characterdata/CharacterData00.java.template b/jdk/make/data/characterdata/CharacterData00.java.template index 42473074cb0..6183fb5eaad 100644 --- a/jdk/make/data/characterdata/CharacterData00.java.template +++ b/jdk/make/data/characterdata/CharacterData00.java.template @@ -136,101 +136,179 @@ class CharacterData00 extends CharacterData { if ((val & $$maskLowerCase) != 0) { if ((val & $$maskCaseOffset) == $$maskCaseOffset) { switch(ch) { - // map the offset overflow chars - case 0x0130 : mapChar = 0x0069; break; - case 0x2126 : mapChar = 0x03C9; break; - case 0x212A : mapChar = 0x006B; break; - case 0x212B : mapChar = 0x00E5; break; - // map the titlecase chars with both a 1:M uppercase map - // and a lowercase map - case 0x1F88 : mapChar = 0x1F80; break; - case 0x1F89 : mapChar = 0x1F81; break; - case 0x1F8A : mapChar = 0x1F82; break; - case 0x1F8B : mapChar = 0x1F83; break; - case 0x1F8C : mapChar = 0x1F84; break; - case 0x1F8D : mapChar = 0x1F85; break; - case 0x1F8E : mapChar = 0x1F86; break; - case 0x1F8F : mapChar = 0x1F87; break; - case 0x1F98 : mapChar = 0x1F90; break; - case 0x1F99 : mapChar = 0x1F91; break; - case 0x1F9A : mapChar = 0x1F92; break; - case 0x1F9B : mapChar = 0x1F93; break; - case 0x1F9C : mapChar = 0x1F94; break; - case 0x1F9D : mapChar = 0x1F95; break; - case 0x1F9E : mapChar = 0x1F96; break; - case 0x1F9F : mapChar = 0x1F97; break; - case 0x1FA8 : mapChar = 0x1FA0; break; - case 0x1FA9 : mapChar = 0x1FA1; break; - case 0x1FAA : mapChar = 0x1FA2; break; - case 0x1FAB : mapChar = 0x1FA3; break; - case 0x1FAC : mapChar = 0x1FA4; break; - case 0x1FAD : mapChar = 0x1FA5; break; - case 0x1FAE : mapChar = 0x1FA6; break; - case 0x1FAF : mapChar = 0x1FA7; break; - case 0x1FBC : mapChar = 0x1FB3; break; - case 0x1FCC : mapChar = 0x1FC3; break; - case 0x1FFC : mapChar = 0x1FF3; break; - - case 0x023A : mapChar = 0x2C65; break; - case 0x023E : mapChar = 0x2C66; break; - case 0x10A0 : mapChar = 0x2D00; break; - case 0x10A1 : mapChar = 0x2D01; break; - case 0x10A2 : mapChar = 0x2D02; break; - case 0x10A3 : mapChar = 0x2D03; break; - case 0x10A4 : mapChar = 0x2D04; break; - case 0x10A5 : mapChar = 0x2D05; break; - case 0x10A6 : mapChar = 0x2D06; break; - case 0x10A7 : mapChar = 0x2D07; break; - case 0x10A8 : mapChar = 0x2D08; break; - case 0x10A9 : mapChar = 0x2D09; break; - case 0x10AA : mapChar = 0x2D0A; break; - case 0x10AB : mapChar = 0x2D0B; break; - case 0x10AC : mapChar = 0x2D0C; break; - case 0x10AD : mapChar = 0x2D0D; break; - case 0x10AE : mapChar = 0x2D0E; break; - case 0x10AF : mapChar = 0x2D0F; break; - case 0x10B0 : mapChar = 0x2D10; break; - case 0x10B1 : mapChar = 0x2D11; break; - case 0x10B2 : mapChar = 0x2D12; break; - case 0x10B3 : mapChar = 0x2D13; break; - case 0x10B4 : mapChar = 0x2D14; break; - case 0x10B5 : mapChar = 0x2D15; break; - case 0x10B6 : mapChar = 0x2D16; break; - case 0x10B7 : mapChar = 0x2D17; break; - case 0x10B8 : mapChar = 0x2D18; break; - case 0x10B9 : mapChar = 0x2D19; break; - case 0x10BA : mapChar = 0x2D1A; break; - case 0x10BB : mapChar = 0x2D1B; break; - case 0x10BC : mapChar = 0x2D1C; break; - case 0x10BD : mapChar = 0x2D1D; break; - case 0x10BE : mapChar = 0x2D1E; break; - case 0x10BF : mapChar = 0x2D1F; break; - case 0x10C0 : mapChar = 0x2D20; break; - case 0x10C1 : mapChar = 0x2D21; break; - case 0x10C2 : mapChar = 0x2D22; break; - case 0x10C3 : mapChar = 0x2D23; break; - case 0x10C4 : mapChar = 0x2D24; break; - case 0x10C5 : mapChar = 0x2D25; break; - case 0x10C7 : mapChar = 0x2D27; break; - case 0x10CD : mapChar = 0x2D2D; break; - case 0x1E9E : mapChar = 0x00DF; break; - case 0x2C62 : mapChar = 0x026B; break; - case 0x2C63 : mapChar = 0x1D7D; break; - case 0x2C64 : mapChar = 0x027D; break; - case 0x2C6D : mapChar = 0x0251; break; - case 0x2C6E : mapChar = 0x0271; break; - case 0x2C6F : mapChar = 0x0250; break; - case 0x2C70 : mapChar = 0x0252; break; - case 0x2C7E : mapChar = 0x023F; break; - case 0x2C7F : mapChar = 0x0240; break; - case 0xA77D : mapChar = 0x1D79; break; - case 0xA78D : mapChar = 0x0265; break; - case 0xA7AA : mapChar = 0x0266; break; - case 0xA7AB : mapChar = 0x025C; break; - case 0xA7AC : mapChar = 0x0261; break; - case 0xA7AD : mapChar = 0x026C; break; - case 0xA7B0 : mapChar = 0x029E; break; - case 0xA7B1 : mapChar = 0x0287; break; + case 0x0130: mapChar = 0x0069; break; + case 0x023A: mapChar = 0x2C65; break; + case 0x023E: mapChar = 0x2C66; break; + case 0x10A0: mapChar = 0x2D00; break; + case 0x10A1: mapChar = 0x2D01; break; + case 0x10A2: mapChar = 0x2D02; break; + case 0x10A3: mapChar = 0x2D03; break; + case 0x10A4: mapChar = 0x2D04; break; + case 0x10A5: mapChar = 0x2D05; break; + case 0x10A6: mapChar = 0x2D06; break; + case 0x10A7: mapChar = 0x2D07; break; + case 0x10A8: mapChar = 0x2D08; break; + case 0x10A9: mapChar = 0x2D09; break; + case 0x10AA: mapChar = 0x2D0A; break; + case 0x10AB: mapChar = 0x2D0B; break; + case 0x10AC: mapChar = 0x2D0C; break; + case 0x10AD: mapChar = 0x2D0D; break; + case 0x10AE: mapChar = 0x2D0E; break; + case 0x10AF: mapChar = 0x2D0F; break; + case 0x10B0: mapChar = 0x2D10; break; + case 0x10B1: mapChar = 0x2D11; break; + case 0x10B2: mapChar = 0x2D12; break; + case 0x10B3: mapChar = 0x2D13; break; + case 0x10B4: mapChar = 0x2D14; break; + case 0x10B5: mapChar = 0x2D15; break; + case 0x10B6: mapChar = 0x2D16; break; + case 0x10B7: mapChar = 0x2D17; break; + case 0x10B8: mapChar = 0x2D18; break; + case 0x10B9: mapChar = 0x2D19; break; + case 0x10BA: mapChar = 0x2D1A; break; + case 0x10BB: mapChar = 0x2D1B; break; + case 0x10BC: mapChar = 0x2D1C; break; + case 0x10BD: mapChar = 0x2D1D; break; + case 0x10BE: mapChar = 0x2D1E; break; + case 0x10BF: mapChar = 0x2D1F; break; + case 0x10C0: mapChar = 0x2D20; break; + case 0x10C1: mapChar = 0x2D21; break; + case 0x10C2: mapChar = 0x2D22; break; + case 0x10C3: mapChar = 0x2D23; break; + case 0x10C4: mapChar = 0x2D24; break; + case 0x10C5: mapChar = 0x2D25; break; + case 0x10C7: mapChar = 0x2D27; break; + case 0x10CD: mapChar = 0x2D2D; break; + case 0x13A0: mapChar = 0xAB70; break; + case 0x13A1: mapChar = 0xAB71; break; + case 0x13A2: mapChar = 0xAB72; break; + case 0x13A3: mapChar = 0xAB73; break; + case 0x13A4: mapChar = 0xAB74; break; + case 0x13A5: mapChar = 0xAB75; break; + case 0x13A6: mapChar = 0xAB76; break; + case 0x13A7: mapChar = 0xAB77; break; + case 0x13A8: mapChar = 0xAB78; break; + case 0x13A9: mapChar = 0xAB79; break; + case 0x13AA: mapChar = 0xAB7A; break; + case 0x13AB: mapChar = 0xAB7B; break; + case 0x13AC: mapChar = 0xAB7C; break; + case 0x13AD: mapChar = 0xAB7D; break; + case 0x13AE: mapChar = 0xAB7E; break; + case 0x13AF: mapChar = 0xAB7F; break; + case 0x13B0: mapChar = 0xAB80; break; + case 0x13B1: mapChar = 0xAB81; break; + case 0x13B2: mapChar = 0xAB82; break; + case 0x13B3: mapChar = 0xAB83; break; + case 0x13B4: mapChar = 0xAB84; break; + case 0x13B5: mapChar = 0xAB85; break; + case 0x13B6: mapChar = 0xAB86; break; + case 0x13B7: mapChar = 0xAB87; break; + case 0x13B8: mapChar = 0xAB88; break; + case 0x13B9: mapChar = 0xAB89; break; + case 0x13BA: mapChar = 0xAB8A; break; + case 0x13BB: mapChar = 0xAB8B; break; + case 0x13BC: mapChar = 0xAB8C; break; + case 0x13BD: mapChar = 0xAB8D; break; + case 0x13BE: mapChar = 0xAB8E; break; + case 0x13BF: mapChar = 0xAB8F; break; + case 0x13C0: mapChar = 0xAB90; break; + case 0x13C1: mapChar = 0xAB91; break; + case 0x13C2: mapChar = 0xAB92; break; + case 0x13C3: mapChar = 0xAB93; break; + case 0x13C4: mapChar = 0xAB94; break; + case 0x13C5: mapChar = 0xAB95; break; + case 0x13C6: mapChar = 0xAB96; break; + case 0x13C7: mapChar = 0xAB97; break; + case 0x13C8: mapChar = 0xAB98; break; + case 0x13C9: mapChar = 0xAB99; break; + case 0x13CA: mapChar = 0xAB9A; break; + case 0x13CB: mapChar = 0xAB9B; break; + case 0x13CC: mapChar = 0xAB9C; break; + case 0x13CD: mapChar = 0xAB9D; break; + case 0x13CE: mapChar = 0xAB9E; break; + case 0x13CF: mapChar = 0xAB9F; break; + case 0x13D0: mapChar = 0xABA0; break; + case 0x13D1: mapChar = 0xABA1; break; + case 0x13D2: mapChar = 0xABA2; break; + case 0x13D3: mapChar = 0xABA3; break; + case 0x13D4: mapChar = 0xABA4; break; + case 0x13D5: mapChar = 0xABA5; break; + case 0x13D6: mapChar = 0xABA6; break; + case 0x13D7: mapChar = 0xABA7; break; + case 0x13D8: mapChar = 0xABA8; break; + case 0x13D9: mapChar = 0xABA9; break; + case 0x13DA: mapChar = 0xABAA; break; + case 0x13DB: mapChar = 0xABAB; break; + case 0x13DC: mapChar = 0xABAC; break; + case 0x13DD: mapChar = 0xABAD; break; + case 0x13DE: mapChar = 0xABAE; break; + case 0x13DF: mapChar = 0xABAF; break; + case 0x13E0: mapChar = 0xABB0; break; + case 0x13E1: mapChar = 0xABB1; break; + case 0x13E2: mapChar = 0xABB2; break; + case 0x13E3: mapChar = 0xABB3; break; + case 0x13E4: mapChar = 0xABB4; break; + case 0x13E5: mapChar = 0xABB5; break; + case 0x13E6: mapChar = 0xABB6; break; + case 0x13E7: mapChar = 0xABB7; break; + case 0x13E8: mapChar = 0xABB8; break; + case 0x13E9: mapChar = 0xABB9; break; + case 0x13EA: mapChar = 0xABBA; break; + case 0x13EB: mapChar = 0xABBB; break; + case 0x13EC: mapChar = 0xABBC; break; + case 0x13ED: mapChar = 0xABBD; break; + case 0x13EE: mapChar = 0xABBE; break; + case 0x13EF: mapChar = 0xABBF; break; + case 0x1E9E: mapChar = 0x00DF; break; + case 0x1F88: mapChar = 0x1F80; break; + case 0x1F89: mapChar = 0x1F81; break; + case 0x1F8A: mapChar = 0x1F82; break; + case 0x1F8B: mapChar = 0x1F83; break; + case 0x1F8C: mapChar = 0x1F84; break; + case 0x1F8D: mapChar = 0x1F85; break; + case 0x1F8E: mapChar = 0x1F86; break; + case 0x1F8F: mapChar = 0x1F87; break; + case 0x1F98: mapChar = 0x1F90; break; + case 0x1F99: mapChar = 0x1F91; break; + case 0x1F9A: mapChar = 0x1F92; break; + case 0x1F9B: mapChar = 0x1F93; break; + case 0x1F9C: mapChar = 0x1F94; break; + case 0x1F9D: mapChar = 0x1F95; break; + case 0x1F9E: mapChar = 0x1F96; break; + case 0x1F9F: mapChar = 0x1F97; break; + case 0x1FA8: mapChar = 0x1FA0; break; + case 0x1FA9: mapChar = 0x1FA1; break; + case 0x1FAA: mapChar = 0x1FA2; break; + case 0x1FAB: mapChar = 0x1FA3; break; + case 0x1FAC: mapChar = 0x1FA4; break; + case 0x1FAD: mapChar = 0x1FA5; break; + case 0x1FAE: mapChar = 0x1FA6; break; + case 0x1FAF: mapChar = 0x1FA7; break; + case 0x1FBC: mapChar = 0x1FB3; break; + case 0x1FCC: mapChar = 0x1FC3; break; + case 0x1FFC: mapChar = 0x1FF3; break; + case 0x2126: mapChar = 0x03C9; break; + case 0x212A: mapChar = 0x006B; break; + case 0x212B: mapChar = 0x00E5; break; + case 0x2C62: mapChar = 0x026B; break; + case 0x2C63: mapChar = 0x1D7D; break; + case 0x2C64: mapChar = 0x027D; break; + case 0x2C6D: mapChar = 0x0251; break; + case 0x2C6E: mapChar = 0x0271; break; + case 0x2C6F: mapChar = 0x0250; break; + case 0x2C70: mapChar = 0x0252; break; + case 0x2C7E: mapChar = 0x023F; break; + case 0x2C7F: mapChar = 0x0240; break; + case 0xA77D: mapChar = 0x1D79; break; + case 0xA78D: mapChar = 0x0265; break; + case 0xA7AA: mapChar = 0x0266; break; + case 0xA7AB: mapChar = 0x025C; break; + case 0xA7AC: mapChar = 0x0261; break; + case 0xA7AD: mapChar = 0x026C; break; + case 0xA7B0: mapChar = 0x029E; break; + case 0xA7B1: mapChar = 0x0287; break; + case 0xA7B2: mapChar = 0x029D; break; + case 0xA7B3: mapChar = 0xAB53; break; // default mapChar is already set, so no // need to redo it here. // default : mapChar = ch; @@ -251,98 +329,176 @@ class CharacterData00 extends CharacterData { if ((val & $$maskUpperCase) != 0) { if ((val & $$maskCaseOffset) == $$maskCaseOffset) { switch(ch) { - // map chars with overflow offsets - case 0x00B5 : mapChar = 0x039C; break; - case 0x017F : mapChar = 0x0053; break; - case 0x1FBE : mapChar = 0x0399; break; - // map char that have both a 1:1 and 1:M map - case 0x1F80 : mapChar = 0x1F88; break; - case 0x1F81 : mapChar = 0x1F89; break; - case 0x1F82 : mapChar = 0x1F8A; break; - case 0x1F83 : mapChar = 0x1F8B; break; - case 0x1F84 : mapChar = 0x1F8C; break; - case 0x1F85 : mapChar = 0x1F8D; break; - case 0x1F86 : mapChar = 0x1F8E; break; - case 0x1F87 : mapChar = 0x1F8F; break; - case 0x1F90 : mapChar = 0x1F98; break; - case 0x1F91 : mapChar = 0x1F99; break; - case 0x1F92 : mapChar = 0x1F9A; break; - case 0x1F93 : mapChar = 0x1F9B; break; - case 0x1F94 : mapChar = 0x1F9C; break; - case 0x1F95 : mapChar = 0x1F9D; break; - case 0x1F96 : mapChar = 0x1F9E; break; - case 0x1F97 : mapChar = 0x1F9F; break; - case 0x1FA0 : mapChar = 0x1FA8; break; - case 0x1FA1 : mapChar = 0x1FA9; break; - case 0x1FA2 : mapChar = 0x1FAA; break; - case 0x1FA3 : mapChar = 0x1FAB; break; - case 0x1FA4 : mapChar = 0x1FAC; break; - case 0x1FA5 : mapChar = 0x1FAD; break; - case 0x1FA6 : mapChar = 0x1FAE; break; - case 0x1FA7 : mapChar = 0x1FAF; break; - case 0x1FB3 : mapChar = 0x1FBC; break; - case 0x1FC3 : mapChar = 0x1FCC; break; - case 0x1FF3 : mapChar = 0x1FFC; break; - - case 0x023F : mapChar = 0x2C7E; break; - case 0x0240 : mapChar = 0x2C7F; break; - case 0x0250 : mapChar = 0x2C6F; break; - case 0x0251 : mapChar = 0x2C6D; break; - case 0x0252 : mapChar = 0x2C70; break; - case 0x025C : mapChar = 0xA7AB; break; - case 0x0261 : mapChar = 0xA7AC; break; - case 0x0265 : mapChar = 0xA78D; break; - case 0x0266 : mapChar = 0xA7AA; break; - case 0x026B : mapChar = 0x2C62; break; - case 0x026C : mapChar = 0xA7AD; break; - case 0x0271 : mapChar = 0x2C6E; break; - case 0x0287 : mapChar = 0xA7B1; break; - case 0x029E : mapChar = 0xA7B0; break; - case 0x027D : mapChar = 0x2C64; break; - case 0x1D79 : mapChar = 0xA77D; break; - case 0x1D7D : mapChar = 0x2C63; break; - case 0x2C65 : mapChar = 0x023A; break; - case 0x2C66 : mapChar = 0x023E; break; - case 0x2D00 : mapChar = 0x10A0; break; - case 0x2D01 : mapChar = 0x10A1; break; - case 0x2D02 : mapChar = 0x10A2; break; - case 0x2D03 : mapChar = 0x10A3; break; - case 0x2D04 : mapChar = 0x10A4; break; - case 0x2D05 : mapChar = 0x10A5; break; - case 0x2D06 : mapChar = 0x10A6; break; - case 0x2D07 : mapChar = 0x10A7; break; - case 0x2D08 : mapChar = 0x10A8; break; - case 0x2D09 : mapChar = 0x10A9; break; - case 0x2D0A : mapChar = 0x10AA; break; - case 0x2D0B : mapChar = 0x10AB; break; - case 0x2D0C : mapChar = 0x10AC; break; - case 0x2D0D : mapChar = 0x10AD; break; - case 0x2D0E : mapChar = 0x10AE; break; - case 0x2D0F : mapChar = 0x10AF; break; - case 0x2D10 : mapChar = 0x10B0; break; - case 0x2D11 : mapChar = 0x10B1; break; - case 0x2D12 : mapChar = 0x10B2; break; - case 0x2D13 : mapChar = 0x10B3; break; - case 0x2D14 : mapChar = 0x10B4; break; - case 0x2D15 : mapChar = 0x10B5; break; - case 0x2D16 : mapChar = 0x10B6; break; - case 0x2D17 : mapChar = 0x10B7; break; - case 0x2D18 : mapChar = 0x10B8; break; - case 0x2D19 : mapChar = 0x10B9; break; - case 0x2D1A : mapChar = 0x10BA; break; - case 0x2D1B : mapChar = 0x10BB; break; - case 0x2D1C : mapChar = 0x10BC; break; - case 0x2D1D : mapChar = 0x10BD; break; - case 0x2D1E : mapChar = 0x10BE; break; - case 0x2D1F : mapChar = 0x10BF; break; - case 0x2D20 : mapChar = 0x10C0; break; - case 0x2D21 : mapChar = 0x10C1; break; - case 0x2D22 : mapChar = 0x10C2; break; - case 0x2D23 : mapChar = 0x10C3; break; - case 0x2D24 : mapChar = 0x10C4; break; - case 0x2D25 : mapChar = 0x10C5; break; - case 0x2D27 : mapChar = 0x10C7; break; - case 0x2D2D : mapChar = 0x10CD; break; + case 0x017F: mapChar = 0x0053; break; + case 0x023F: mapChar = 0x2C7E; break; + case 0x0240: mapChar = 0x2C7F; break; + case 0x0250: mapChar = 0x2C6F; break; + case 0x0251: mapChar = 0x2C6D; break; + case 0x0252: mapChar = 0x2C70; break; + case 0x025C: mapChar = 0xA7AB; break; + case 0x0261: mapChar = 0xA7AC; break; + case 0x0265: mapChar = 0xA78D; break; + case 0x0266: mapChar = 0xA7AA; break; + case 0x026B: mapChar = 0x2C62; break; + case 0x026C: mapChar = 0xA7AD; break; + case 0x0271: mapChar = 0x2C6E; break; + case 0x027D: mapChar = 0x2C64; break; + case 0x0287: mapChar = 0xA7B1; break; + case 0x029D: mapChar = 0xA7B2; break; + case 0x029E: mapChar = 0xA7B0; break; + case 0x1D79: mapChar = 0xA77D; break; + case 0x1D7D: mapChar = 0x2C63; break; + case 0x1F80: mapChar = 0x1F88; break; + case 0x1F81: mapChar = 0x1F89; break; + case 0x1F82: mapChar = 0x1F8A; break; + case 0x1F83: mapChar = 0x1F8B; break; + case 0x1F84: mapChar = 0x1F8C; break; + case 0x1F85: mapChar = 0x1F8D; break; + case 0x1F86: mapChar = 0x1F8E; break; + case 0x1F87: mapChar = 0x1F8F; break; + case 0x1F90: mapChar = 0x1F98; break; + case 0x1F91: mapChar = 0x1F99; break; + case 0x1F92: mapChar = 0x1F9A; break; + case 0x1F93: mapChar = 0x1F9B; break; + case 0x1F94: mapChar = 0x1F9C; break; + case 0x1F95: mapChar = 0x1F9D; break; + case 0x1F96: mapChar = 0x1F9E; break; + case 0x1F97: mapChar = 0x1F9F; break; + case 0x1FA0: mapChar = 0x1FA8; break; + case 0x1FA1: mapChar = 0x1FA9; break; + case 0x1FA2: mapChar = 0x1FAA; break; + case 0x1FA3: mapChar = 0x1FAB; break; + case 0x1FA4: mapChar = 0x1FAC; break; + case 0x1FA5: mapChar = 0x1FAD; break; + case 0x1FA6: mapChar = 0x1FAE; break; + case 0x1FA7: mapChar = 0x1FAF; break; + case 0x1FB3: mapChar = 0x1FBC; break; + case 0x1FBE: mapChar = 0x0399; break; + case 0x1FC3: mapChar = 0x1FCC; break; + case 0x1FF3: mapChar = 0x1FFC; break; + case 0x2C65: mapChar = 0x023A; break; + case 0x2C66: mapChar = 0x023E; break; + case 0x2D00: mapChar = 0x10A0; break; + case 0x2D01: mapChar = 0x10A1; break; + case 0x2D02: mapChar = 0x10A2; break; + case 0x2D03: mapChar = 0x10A3; break; + case 0x2D04: mapChar = 0x10A4; break; + case 0x2D05: mapChar = 0x10A5; break; + case 0x2D06: mapChar = 0x10A6; break; + case 0x2D07: mapChar = 0x10A7; break; + case 0x2D08: mapChar = 0x10A8; break; + case 0x2D09: mapChar = 0x10A9; break; + case 0x2D0A: mapChar = 0x10AA; break; + case 0x2D0B: mapChar = 0x10AB; break; + case 0x2D0C: mapChar = 0x10AC; break; + case 0x2D0D: mapChar = 0x10AD; break; + case 0x2D0E: mapChar = 0x10AE; break; + case 0x2D0F: mapChar = 0x10AF; break; + case 0x2D10: mapChar = 0x10B0; break; + case 0x2D11: mapChar = 0x10B1; break; + case 0x2D12: mapChar = 0x10B2; break; + case 0x2D13: mapChar = 0x10B3; break; + case 0x2D14: mapChar = 0x10B4; break; + case 0x2D15: mapChar = 0x10B5; break; + case 0x2D16: mapChar = 0x10B6; break; + case 0x2D17: mapChar = 0x10B7; break; + case 0x2D18: mapChar = 0x10B8; break; + case 0x2D19: mapChar = 0x10B9; break; + case 0x2D1A: mapChar = 0x10BA; break; + case 0x2D1B: mapChar = 0x10BB; break; + case 0x2D1C: mapChar = 0x10BC; break; + case 0x2D1D: mapChar = 0x10BD; break; + case 0x2D1E: mapChar = 0x10BE; break; + case 0x2D1F: mapChar = 0x10BF; break; + case 0x2D20: mapChar = 0x10C0; break; + case 0x2D21: mapChar = 0x10C1; break; + case 0x2D22: mapChar = 0x10C2; break; + case 0x2D23: mapChar = 0x10C3; break; + case 0x2D24: mapChar = 0x10C4; break; + case 0x2D25: mapChar = 0x10C5; break; + case 0x2D27: mapChar = 0x10C7; break; + case 0x2D2D: mapChar = 0x10CD; break; + case 0xAB53: mapChar = 0xA7B3; break; + case 0xAB70: mapChar = 0x13A0; break; + case 0xAB71: mapChar = 0x13A1; break; + case 0xAB72: mapChar = 0x13A2; break; + case 0xAB73: mapChar = 0x13A3; break; + case 0xAB74: mapChar = 0x13A4; break; + case 0xAB75: mapChar = 0x13A5; break; + case 0xAB76: mapChar = 0x13A6; break; + case 0xAB77: mapChar = 0x13A7; break; + case 0xAB78: mapChar = 0x13A8; break; + case 0xAB79: mapChar = 0x13A9; break; + case 0xAB7A: mapChar = 0x13AA; break; + case 0xAB7B: mapChar = 0x13AB; break; + case 0xAB7C: mapChar = 0x13AC; break; + case 0xAB7D: mapChar = 0x13AD; break; + case 0xAB7E: mapChar = 0x13AE; break; + case 0xAB7F: mapChar = 0x13AF; break; + case 0xAB80: mapChar = 0x13B0; break; + case 0xAB81: mapChar = 0x13B1; break; + case 0xAB82: mapChar = 0x13B2; break; + case 0xAB83: mapChar = 0x13B3; break; + case 0xAB84: mapChar = 0x13B4; break; + case 0xAB85: mapChar = 0x13B5; break; + case 0xAB86: mapChar = 0x13B6; break; + case 0xAB87: mapChar = 0x13B7; break; + case 0xAB88: mapChar = 0x13B8; break; + case 0xAB89: mapChar = 0x13B9; break; + case 0xAB8A: mapChar = 0x13BA; break; + case 0xAB8B: mapChar = 0x13BB; break; + case 0xAB8C: mapChar = 0x13BC; break; + case 0xAB8D: mapChar = 0x13BD; break; + case 0xAB8E: mapChar = 0x13BE; break; + case 0xAB8F: mapChar = 0x13BF; break; + case 0xAB90: mapChar = 0x13C0; break; + case 0xAB91: mapChar = 0x13C1; break; + case 0xAB92: mapChar = 0x13C2; break; + case 0xAB93: mapChar = 0x13C3; break; + case 0xAB94: mapChar = 0x13C4; break; + case 0xAB95: mapChar = 0x13C5; break; + case 0xAB96: mapChar = 0x13C6; break; + case 0xAB97: mapChar = 0x13C7; break; + case 0xAB98: mapChar = 0x13C8; break; + case 0xAB99: mapChar = 0x13C9; break; + case 0xAB9A: mapChar = 0x13CA; break; + case 0xAB9B: mapChar = 0x13CB; break; + case 0xAB9C: mapChar = 0x13CC; break; + case 0xAB9D: mapChar = 0x13CD; break; + case 0xAB9E: mapChar = 0x13CE; break; + case 0xAB9F: mapChar = 0x13CF; break; + case 0xABA0: mapChar = 0x13D0; break; + case 0xABA1: mapChar = 0x13D1; break; + case 0xABA2: mapChar = 0x13D2; break; + case 0xABA3: mapChar = 0x13D3; break; + case 0xABA4: mapChar = 0x13D4; break; + case 0xABA5: mapChar = 0x13D5; break; + case 0xABA6: mapChar = 0x13D6; break; + case 0xABA7: mapChar = 0x13D7; break; + case 0xABA8: mapChar = 0x13D8; break; + case 0xABA9: mapChar = 0x13D9; break; + case 0xABAA: mapChar = 0x13DA; break; + case 0xABAB: mapChar = 0x13DB; break; + case 0xABAC: mapChar = 0x13DC; break; + case 0xABAD: mapChar = 0x13DD; break; + case 0xABAE: mapChar = 0x13DE; break; + case 0xABAF: mapChar = 0x13DF; break; + case 0xABB0: mapChar = 0x13E0; break; + case 0xABB1: mapChar = 0x13E1; break; + case 0xABB2: mapChar = 0x13E2; break; + case 0xABB3: mapChar = 0x13E3; break; + case 0xABB4: mapChar = 0x13E4; break; + case 0xABB5: mapChar = 0x13E5; break; + case 0xABB6: mapChar = 0x13E6; break; + case 0xABB7: mapChar = 0x13E7; break; + case 0xABB8: mapChar = 0x13E8; break; + case 0xABB9: mapChar = 0x13E9; break; + case 0xABBA: mapChar = 0x13EA; break; + case 0xABBB: mapChar = 0x13EB; break; + case 0xABBC: mapChar = 0x13EC; break; + case 0xABBD: mapChar = 0x13ED; break; + case 0xABBE: mapChar = 0x13EE; break; + case 0xABBF: mapChar = 0x13EF; break; // ch must have a 1:M case mapping, but we // can't handle it here. Return ch. // since mapChar is already set, no need @@ -420,6 +576,8 @@ class CharacterData00 extends CharacterData { switch (ch) { case 0x0BF1: retval = 100; break; // TAMIL NUMBER ONE HUNDRED case 0x0BF2: retval = 1000; break; // TAMIL NUMBER ONE THOUSAND + case 0x0D71: retval = 100; break; // MALAYALAM NUMBER ONE HUNDRED + case 0x0D72: retval = 1000; break; // MALAYALAM NUMBER ONE THOUSAND case 0x1375: retval = 40; break; // ETHIOPIC NUMBER FORTY case 0x1376: retval = 50; break; // ETHIOPIC NUMBER FIFTY case 0x1377: retval = 60; break; // ETHIOPIC NUMBER SIXTY @@ -440,14 +598,15 @@ class CharacterData00 extends CharacterData { case 0x2180: retval = 1000; break; // ROMAN NUMERAL ONE THOUSAND C D case 0x2181: retval = 5000; break; // ROMAN NUMERAL FIVE THOUSAND case 0x2182: retval = 10000; break; // ROMAN NUMERAL TEN THOUSAND - - case 0x324B: retval = 40; break; - case 0x324C: retval = 50; break; - case 0x324D: retval = 60; break; - case 0x324E: retval = 70; break; - case 0x324F: retval = 80; break; - case 0x325C: retval = 32; break; - + case 0x2186: retval = 50; break; // ROMAN NUMERAL FIFTY EARLY FORM + case 0x2187: retval = 50000; break; // ROMAN NUMERAL FIFTY THOUSAND + case 0x2188: retval = 100000; break; // ROMAN NUMERAL ONE HUNDRED THOUSAND + case 0x324B: retval = 40; break; // CIRCLED NUMBER FORTY ON BLACK SQUARE + case 0x324C: retval = 50; break; // CIRCLED NUMBER FIFTY ON BLACK SQUARE + case 0x324D: retval = 60; break; // CIRCLED NUMBER SIXTY ON BLACK SQUARE + case 0x324E: retval = 70; break; // CIRCLED NUMBER SEVENTY ON BLACK SQUARE + case 0x324F: retval = 80; break; // CIRCLED NUMBER EIGHTY ON BLACK SQUARE + case 0x325C: retval = 32; break; // CIRCLED NUMBER THIRTY TWO case 0x325D: retval = 33; break; // CIRCLED NUMBER THIRTY THREE case 0x325E: retval = 34; break; // CIRCLED NUMBER THIRTY FOUR case 0x325F: retval = 35; break; // CIRCLED NUMBER THIRTY FIVE @@ -466,13 +625,6 @@ class CharacterData00 extends CharacterData { case 0x32BD: retval = 48; break; // CIRCLED NUMBER FORTY EIGHT case 0x32BE: retval = 49; break; // CIRCLED NUMBER FORTY NINE case 0x32BF: retval = 50; break; // CIRCLED NUMBER FIFTY - - case 0x0D71: retval = 100; break; // MALAYALAM NUMBER ONE HUNDRED - case 0x0D72: retval = 1000; break; // MALAYALAM NUMBER ONE THOUSAND - case 0x2186: retval = 50; break; // ROMAN NUMERAL FIFTY EARLY FORM - case 0x2187: retval = 50000; break; // ROMAN NUMERAL FIFTY THOUSAND - case 0x2188: retval = 100000; break; // ROMAN NUMERAL ONE HUNDRED THOUSAND - default: retval = -2; break; } break; @@ -553,70 +705,149 @@ class CharacterData00 extends CharacterData { } else { switch(ch) { - // map overflow characters - case 0x00B5 : mapChar = 0x039C; break; - case 0x017F : mapChar = 0x0053; break; - case 0x1FBE : mapChar = 0x0399; break; - - case 0x023F : mapChar = 0x2C7E; break; - case 0x0240 : mapChar = 0x2C7F; break; - case 0x0250 : mapChar = 0x2C6F; break; - case 0x0251 : mapChar = 0x2C6D; break; - case 0x0252 : mapChar = 0x2C70; break; - case 0x025C : mapChar = 0xA7AB; break; - case 0x0261 : mapChar = 0xA7AC; break; - case 0x0265 : mapChar = 0xA78D; break; - case 0x0266 : mapChar = 0xA7AA; break; - case 0x026B : mapChar = 0x2C62; break; - case 0x026C : mapChar = 0xA7AD; break; - case 0x0271 : mapChar = 0x2C6E; break; - case 0x027D : mapChar = 0x2C64; break; - case 0x0287 : mapChar = 0xA7B1; break; - case 0x029E : mapChar = 0xA7B0; break; - case 0x1D79 : mapChar = 0xA77D; break; - case 0x1D7D : mapChar = 0x2C63; break; - case 0x2C65 : mapChar = 0x023A; break; - case 0x2C66 : mapChar = 0x023E; break; - case 0x2D00 : mapChar = 0x10A0; break; - case 0x2D01 : mapChar = 0x10A1; break; - case 0x2D02 : mapChar = 0x10A2; break; - case 0x2D03 : mapChar = 0x10A3; break; - case 0x2D04 : mapChar = 0x10A4; break; - case 0x2D05 : mapChar = 0x10A5; break; - case 0x2D06 : mapChar = 0x10A6; break; - case 0x2D07 : mapChar = 0x10A7; break; - case 0x2D08 : mapChar = 0x10A8; break; - case 0x2D09 : mapChar = 0x10A9; break; - case 0x2D0A : mapChar = 0x10AA; break; - case 0x2D0B : mapChar = 0x10AB; break; - case 0x2D0C : mapChar = 0x10AC; break; - case 0x2D0D : mapChar = 0x10AD; break; - case 0x2D0E : mapChar = 0x10AE; break; - case 0x2D0F : mapChar = 0x10AF; break; - case 0x2D10 : mapChar = 0x10B0; break; - case 0x2D11 : mapChar = 0x10B1; break; - case 0x2D12 : mapChar = 0x10B2; break; - case 0x2D13 : mapChar = 0x10B3; break; - case 0x2D14 : mapChar = 0x10B4; break; - case 0x2D15 : mapChar = 0x10B5; break; - case 0x2D16 : mapChar = 0x10B6; break; - case 0x2D17 : mapChar = 0x10B7; break; - case 0x2D18 : mapChar = 0x10B8; break; - case 0x2D19 : mapChar = 0x10B9; break; - case 0x2D1A : mapChar = 0x10BA; break; - case 0x2D1B : mapChar = 0x10BB; break; - case 0x2D1C : mapChar = 0x10BC; break; - case 0x2D1D : mapChar = 0x10BD; break; - case 0x2D1E : mapChar = 0x10BE; break; - case 0x2D1F : mapChar = 0x10BF; break; - case 0x2D20 : mapChar = 0x10C0; break; - case 0x2D21 : mapChar = 0x10C1; break; - case 0x2D22 : mapChar = 0x10C2; break; - case 0x2D23 : mapChar = 0x10C3; break; - case 0x2D24 : mapChar = 0x10C4; break; - case 0x2D25 : mapChar = 0x10C5; break; - case 0x2D27 : mapChar = 0x10C7; break; - case 0x2D2D : mapChar = 0x10CD; break; + case 0x017F: mapChar = 0x0053; break; + case 0x023F: mapChar = 0x2C7E; break; + case 0x0240: mapChar = 0x2C7F; break; + case 0x0250: mapChar = 0x2C6F; break; + case 0x0251: mapChar = 0x2C6D; break; + case 0x0252: mapChar = 0x2C70; break; + case 0x025C: mapChar = 0xA7AB; break; + case 0x0261: mapChar = 0xA7AC; break; + case 0x0265: mapChar = 0xA78D; break; + case 0x0266: mapChar = 0xA7AA; break; + case 0x026B: mapChar = 0x2C62; break; + case 0x026C: mapChar = 0xA7AD; break; + case 0x0271: mapChar = 0x2C6E; break; + case 0x027D: mapChar = 0x2C64; break; + case 0x0287: mapChar = 0xA7B1; break; + case 0x029D: mapChar = 0xA7B2; break; + case 0x029E: mapChar = 0xA7B0; break; + case 0x1D79: mapChar = 0xA77D; break; + case 0x1D7D: mapChar = 0x2C63; break; + case 0x1FBE: mapChar = 0x0399; break; + case 0x2C65: mapChar = 0x023A; break; + case 0x2C66: mapChar = 0x023E; break; + case 0x2D00: mapChar = 0x10A0; break; + case 0x2D01: mapChar = 0x10A1; break; + case 0x2D02: mapChar = 0x10A2; break; + case 0x2D03: mapChar = 0x10A3; break; + case 0x2D04: mapChar = 0x10A4; break; + case 0x2D05: mapChar = 0x10A5; break; + case 0x2D06: mapChar = 0x10A6; break; + case 0x2D07: mapChar = 0x10A7; break; + case 0x2D08: mapChar = 0x10A8; break; + case 0x2D09: mapChar = 0x10A9; break; + case 0x2D0A: mapChar = 0x10AA; break; + case 0x2D0B: mapChar = 0x10AB; break; + case 0x2D0C: mapChar = 0x10AC; break; + case 0x2D0D: mapChar = 0x10AD; break; + case 0x2D0E: mapChar = 0x10AE; break; + case 0x2D0F: mapChar = 0x10AF; break; + case 0x2D10: mapChar = 0x10B0; break; + case 0x2D11: mapChar = 0x10B1; break; + case 0x2D12: mapChar = 0x10B2; break; + case 0x2D13: mapChar = 0x10B3; break; + case 0x2D14: mapChar = 0x10B4; break; + case 0x2D15: mapChar = 0x10B5; break; + case 0x2D16: mapChar = 0x10B6; break; + case 0x2D17: mapChar = 0x10B7; break; + case 0x2D18: mapChar = 0x10B8; break; + case 0x2D19: mapChar = 0x10B9; break; + case 0x2D1A: mapChar = 0x10BA; break; + case 0x2D1B: mapChar = 0x10BB; break; + case 0x2D1C: mapChar = 0x10BC; break; + case 0x2D1D: mapChar = 0x10BD; break; + case 0x2D1E: mapChar = 0x10BE; break; + case 0x2D1F: mapChar = 0x10BF; break; + case 0x2D20: mapChar = 0x10C0; break; + case 0x2D21: mapChar = 0x10C1; break; + case 0x2D22: mapChar = 0x10C2; break; + case 0x2D23: mapChar = 0x10C3; break; + case 0x2D24: mapChar = 0x10C4; break; + case 0x2D25: mapChar = 0x10C5; break; + case 0x2D27: mapChar = 0x10C7; break; + case 0x2D2D: mapChar = 0x10CD; break; + case 0xAB53: mapChar = 0xA7B3; break; + case 0xAB70: mapChar = 0x13A0; break; + case 0xAB71: mapChar = 0x13A1; break; + case 0xAB72: mapChar = 0x13A2; break; + case 0xAB73: mapChar = 0x13A3; break; + case 0xAB74: mapChar = 0x13A4; break; + case 0xAB75: mapChar = 0x13A5; break; + case 0xAB76: mapChar = 0x13A6; break; + case 0xAB77: mapChar = 0x13A7; break; + case 0xAB78: mapChar = 0x13A8; break; + case 0xAB79: mapChar = 0x13A9; break; + case 0xAB7A: mapChar = 0x13AA; break; + case 0xAB7B: mapChar = 0x13AB; break; + case 0xAB7C: mapChar = 0x13AC; break; + case 0xAB7D: mapChar = 0x13AD; break; + case 0xAB7E: mapChar = 0x13AE; break; + case 0xAB7F: mapChar = 0x13AF; break; + case 0xAB80: mapChar = 0x13B0; break; + case 0xAB81: mapChar = 0x13B1; break; + case 0xAB82: mapChar = 0x13B2; break; + case 0xAB83: mapChar = 0x13B3; break; + case 0xAB84: mapChar = 0x13B4; break; + case 0xAB85: mapChar = 0x13B5; break; + case 0xAB86: mapChar = 0x13B6; break; + case 0xAB87: mapChar = 0x13B7; break; + case 0xAB88: mapChar = 0x13B8; break; + case 0xAB89: mapChar = 0x13B9; break; + case 0xAB8A: mapChar = 0x13BA; break; + case 0xAB8B: mapChar = 0x13BB; break; + case 0xAB8C: mapChar = 0x13BC; break; + case 0xAB8D: mapChar = 0x13BD; break; + case 0xAB8E: mapChar = 0x13BE; break; + case 0xAB8F: mapChar = 0x13BF; break; + case 0xAB90: mapChar = 0x13C0; break; + case 0xAB91: mapChar = 0x13C1; break; + case 0xAB92: mapChar = 0x13C2; break; + case 0xAB93: mapChar = 0x13C3; break; + case 0xAB94: mapChar = 0x13C4; break; + case 0xAB95: mapChar = 0x13C5; break; + case 0xAB96: mapChar = 0x13C6; break; + case 0xAB97: mapChar = 0x13C7; break; + case 0xAB98: mapChar = 0x13C8; break; + case 0xAB99: mapChar = 0x13C9; break; + case 0xAB9A: mapChar = 0x13CA; break; + case 0xAB9B: mapChar = 0x13CB; break; + case 0xAB9C: mapChar = 0x13CC; break; + case 0xAB9D: mapChar = 0x13CD; break; + case 0xAB9E: mapChar = 0x13CE; break; + case 0xAB9F: mapChar = 0x13CF; break; + case 0xABA0: mapChar = 0x13D0; break; + case 0xABA1: mapChar = 0x13D1; break; + case 0xABA2: mapChar = 0x13D2; break; + case 0xABA3: mapChar = 0x13D3; break; + case 0xABA4: mapChar = 0x13D4; break; + case 0xABA5: mapChar = 0x13D5; break; + case 0xABA6: mapChar = 0x13D6; break; + case 0xABA7: mapChar = 0x13D7; break; + case 0xABA8: mapChar = 0x13D8; break; + case 0xABA9: mapChar = 0x13D9; break; + case 0xABAA: mapChar = 0x13DA; break; + case 0xABAB: mapChar = 0x13DB; break; + case 0xABAC: mapChar = 0x13DC; break; + case 0xABAD: mapChar = 0x13DD; break; + case 0xABAE: mapChar = 0x13DE; break; + case 0xABAF: mapChar = 0x13DF; break; + case 0xABB0: mapChar = 0x13E0; break; + case 0xABB1: mapChar = 0x13E1; break; + case 0xABB2: mapChar = 0x13E2; break; + case 0xABB3: mapChar = 0x13E3; break; + case 0xABB4: mapChar = 0x13E4; break; + case 0xABB5: mapChar = 0x13E5; break; + case 0xABB6: mapChar = 0x13E6; break; + case 0xABB7: mapChar = 0x13E7; break; + case 0xABB8: mapChar = 0x13E8; break; + case 0xABB9: mapChar = 0x13E9; break; + case 0xABBA: mapChar = 0x13EA; break; + case 0xABBB: mapChar = 0x13EB; break; + case 0xABBC: mapChar = 0x13EC; break; + case 0xABBD: mapChar = 0x13ED; break; + case 0xABBE: mapChar = 0x13EE; break; + case 0xABBF: mapChar = 0x13EF; break; default : mapChar = Character.ERROR; break; } } diff --git a/jdk/make/data/characterdata/CharacterData01.java.template b/jdk/make/data/characterdata/CharacterData01.java.template index 78bf83874d9..8441de74815 100644 --- a/jdk/make/data/characterdata/CharacterData01.java.template +++ b/jdk/make/data/characterdata/CharacterData01.java.template @@ -243,36 +243,35 @@ class CharacterData01 extends CharacterData { case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND - case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY - case 0x10144: retval = 50; break; // ACROPHONIC ATTIC FIFTY - case 0x10145: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED - case 0x10146: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND - case 0x10147: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND - case 0x1014A: retval = 50; break; // ACROPHONIC ATTIC FIFTY TALENTS - case 0x1014B: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED TALENTS - case 0x1014C: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED TALENTS - case 0x1014D: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND TALENTS - case 0x1014E: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND TALENTS - case 0x10151: retval = 50; break; // ACROPHONIC ATTIC FIFTY STATERS - case 0x10152: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED STATERS - case 0x10153: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED STATERS - case 0x10154: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND STATERS - case 0x10155: retval = 10000; break; // ACROPHONIC ATTIC TEN THOUSAND STATERS - case 0x10156: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND STATERS - case 0x10166: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY - case 0x10167: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM - case 0x10168: retval = 50; break; // ACROPHONIC HERMIONIAN FIFTY - case 0x10169: retval = 50; break; // ACROPHONIC THESPIAN FIFTY - case 0x1016A: retval = 100; break; // ACROPHONIC THESPIAN ONE HUNDRED - case 0x1016B: retval = 300; break; // ACROPHONIC THESPIAN THREE HUNDRED - case 0x1016C: retval = 500; break; // ACROPHONIC EPIDAUREAN FIVE HUNDRED - case 0x1016D: retval = 500; break; // ACROPHONIC TROEZENIAN FIVE HUNDRED - case 0x1016E: retval = 500; break; // ACROPHONIC THESPIAN FIVE HUNDRED - case 0x1016F: retval = 500; break; // ACROPHONIC CARYSTIAN FIVE HUNDRED - case 0x10170: retval = 500; break; // ACROPHONIC NAXIAN FIVE HUNDRED - case 0x10171: retval = 1000; break; // ACROPHONIC THESPIAN ONE THOUSAND - case 0x10172: retval = 5000; break; // ACROPHONIC THESPIAN FIVE THOUSAND - case 0x10174: retval = 50; break; // ACROPHONIC STRATIAN FIFTY MNAS + case 0x10144: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY + case 0x10145: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED + case 0x10146: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND + case 0x10147: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND + case 0x1014A: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY TALENTS + case 0x1014B: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS + case 0x1014C: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS + case 0x1014D: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS + case 0x1014E: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS + case 0x10151: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY STATERS + case 0x10152: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS + case 0x10153: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS + case 0x10154: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS + case 0x10155: retval = 10000; break; // GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS + case 0x10156: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS + case 0x10166: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY + case 0x10167: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM + case 0x10168: retval = 50; break; // GREEK ACROPHONIC HERMIONIAN FIFTY + case 0x10169: retval = 50; break; // GREEK ACROPHONIC THESPIAN FIFTY + case 0x1016A: retval = 100; break; // GREEK ACROPHONIC THESPIAN ONE HUNDRED + case 0x1016B: retval = 300; break; // GREEK ACROPHONIC THESPIAN THREE HUNDRED + case 0x1016C: retval = 500; break; // GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED + case 0x1016D: retval = 500; break; // GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED + case 0x1016E: retval = 500; break; // GREEK ACROPHONIC THESPIAN FIVE HUNDRED + case 0x1016F: retval = 500; break; // GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED + case 0x10170: retval = 500; break; // GREEK ACROPHONIC NAXIAN FIVE HUNDRED + case 0x10171: retval = 1000; break; // GREEK ACROPHONIC THESPIAN ONE THOUSAND + case 0x10172: retval = 5000; break; // GREEK ACROPHONIC THESPIAN FIVE THOUSAND + case 0x10174: retval = 50; break; // GREEK ACROPHONIC STRATIAN FIFTY MNAS case 0x102ED: retval = 40; break; // COPTIC EPACT NUMBER FORTY case 0x102EE: retval = 50; break; // COPTIC EPACT NUMBER FIFTY case 0x102EF: retval = 60; break; // COPTIC EPACT NUMBER SIXTY @@ -288,6 +287,7 @@ class CharacterData01 extends CharacterData { case 0x102F9: retval = 700; break; // COPTIC EPACT NUMBER SEVEN HUNDRED case 0x102FA: retval = 800; break; // COPTIC EPACT NUMBER EIGHT HUNDRED case 0x102FB: retval = 900; break; // COPTIC EPACT NUMBER NINE HUNDRED + case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY case 0x10341: retval = 90; break; // GOTHIC LETTER NINETY case 0x1034A: retval = 900; break; // GOTHIC LETTER NINE HUNDRED case 0x103D5: retval = 100; break; // OLD PERSIAN NUMBER HUNDRED @@ -295,7 +295,48 @@ class CharacterData01 extends CharacterData { case 0x1085E: retval = 1000; break; // IMPERIAL ARAMAIC NUMBER ONE THOUSAND case 0x1085F: retval = 10000; break; // IMPERIAL ARAMAIC NUMBER TEN THOUSAND case 0x108AF: retval = 100; break; // NABATAEAN NUMBER ONE HUNDRED + case 0x108FF: retval = 100; break; // HATRAN NUMBER ONE HUNDRED case 0x10919: retval = 100; break; // PHOENICIAN NUMBER ONE HUNDRED + case 0x109CC: retval = 40; break; // MEROITIC CURSIVE NUMBER FORTY + case 0x109CD: retval = 50; break; // MEROITIC CURSIVE NUMBER FIFTY + case 0x109CE: retval = 60; break; // MEROITIC CURSIVE NUMBER SIXTY + case 0x109CF: retval = 70; break; // MEROITIC CURSIVE NUMBER SEVENTY + case 0x109D2: retval = 100; break; // MEROITIC CURSIVE NUMBER ONE HUNDRED + case 0x109D3: retval = 200; break; // MEROITIC CURSIVE NUMBER TWO HUNDRED + case 0x109D4: retval = 300; break; // MEROITIC CURSIVE NUMBER THREE HUNDRED + case 0x109D5: retval = 400; break; // MEROITIC CURSIVE NUMBER FOUR HUNDRED + case 0x109D6: retval = 500; break; // MEROITIC CURSIVE NUMBER FIVE HUNDRED + case 0x109D7: retval = 600; break; // MEROITIC CURSIVE NUMBER SIX HUNDRED + case 0x109D8: retval = 700; break; // MEROITIC CURSIVE NUMBER SEVEN HUNDRED + case 0x109D9: retval = 800; break; // MEROITIC CURSIVE NUMBER EIGHT HUNDRED + case 0x109DA: retval = 900; break; // MEROITIC CURSIVE NUMBER NINE HUNDRED + case 0x109DB: retval = 1000; break; // MEROITIC CURSIVE NUMBER ONE THOUSAND + case 0x109DC: retval = 2000; break; // MEROITIC CURSIVE NUMBER TWO THOUSAND + case 0x109DD: retval = 3000; break; // MEROITIC CURSIVE NUMBER THREE THOUSAND + case 0x109DE: retval = 4000; break; // MEROITIC CURSIVE NUMBER FOUR THOUSAND + case 0x109DF: retval = 5000; break; // MEROITIC CURSIVE NUMBER FIVE THOUSAND + case 0x109E0: retval = 6000; break; // MEROITIC CURSIVE NUMBER SIX THOUSAND + case 0x109E1: retval = 7000; break; // MEROITIC CURSIVE NUMBER SEVEN THOUSAND + case 0x109E2: retval = 8000; break; // MEROITIC CURSIVE NUMBER EIGHT THOUSAND + case 0x109E3: retval = 9000; break; // MEROITIC CURSIVE NUMBER NINE THOUSAND + case 0x109E4: retval = 10000; break; // MEROITIC CURSIVE NUMBER TEN THOUSAND + case 0x109E5: retval = 20000; break; // MEROITIC CURSIVE NUMBER TWENTY THOUSAND + case 0x109E6: retval = 30000; break; // MEROITIC CURSIVE NUMBER THIRTY THOUSAND + case 0x109E7: retval = 40000; break; // MEROITIC CURSIVE NUMBER FORTY THOUSAND + case 0x109E8: retval = 50000; break; // MEROITIC CURSIVE NUMBER FIFTY THOUSAND + case 0x109E9: retval = 60000; break; // MEROITIC CURSIVE NUMBER SIXTY THOUSAND + case 0x109EA: retval = 70000; break; // MEROITIC CURSIVE NUMBER SEVENTY THOUSAND + case 0x109EB: retval = 80000; break; // MEROITIC CURSIVE NUMBER EIGHTY THOUSAND + case 0x109EC: retval = 90000; break; // MEROITIC CURSIVE NUMBER NINETY THOUSAND + case 0x109ED: retval = 100000; break; // MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND + case 0x109EE: retval = 200000; break; // MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND + case 0x109EF: retval = 300000; break; // MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND + case 0x109F0: retval = 400000; break; // MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND + case 0x109F1: retval = 500000; break; // MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND + case 0x109F2: retval = 600000; break; // MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND + case 0x109F3: retval = 700000; break; // MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND + case 0x109F4: retval = 800000; break; // MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND + case 0x109F5: retval = 900000; break; // MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND case 0x10A46: retval = 100; break; // KHAROSHTHI NUMBER ONE HUNDRED case 0x10A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND case 0x10A7E: retval = 50; break; // OLD SOUTH ARABIAN NUMBER FIFTY @@ -305,6 +346,9 @@ class CharacterData01 extends CharacterData { case 0x10B7E: retval = 100; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED case 0x10B7F: retval = 1000; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND case 0x10BAF: retval = 100; break; // PSALTER PAHLAVI NUMBER ONE HUNDRED + case 0x10CFD: retval = 50; break; // OLD HUNGARIAN NUMBER FIFTY + case 0x10CFE: retval = 100; break; // OLD HUNGARIAN NUMBER ONE HUNDRED + case 0x10CFF: retval = 1000; break; // OLD HUNGARIAN NUMBER ONE THOUSAND case 0x10E6C: retval = 40; break; // RUMI NUMBER FORTY case 0x10E6D: retval = 50; break; // RUMI NUMBER FIFTY case 0x10E6E: retval = 60; break; // RUMI NUMBER SIXTY diff --git a/jdk/make/data/unicodedata/PropList.txt b/jdk/make/data/unicodedata/PropList.txt index 82f650d5749..2eb2926e072 100644 --- a/jdk/make/data/unicodedata/PropList.txt +++ b/jdk/make/data/unicodedata/PropList.txt @@ -1,8 +1,8 @@ -# PropList-7.0.0.txt -# Date: 2014-02-19, 15:51:26 GMT [MD] +# PropList-8.0.0.txt +# Date: 2015-05-16, 17:50:38 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -189,18 +189,22 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111CD ; Terminal_Punctuation # Po SHARADA SUTRA MARK +111DE..111DF ; Terminal_Punctuation # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK +112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK 115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR -115C9 ; Terminal_Punctuation # Po SIDDHAM END OF TEXT MARK +115C9..115D7 ; Terminal_Punctuation # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA +1173C..1173E ; Terminal_Punctuation # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP 16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM 16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS 1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON -# Total code points: 214 +# Total code points: 238 # ================================================ @@ -425,7 +429,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN -08E4..08E9 ; Other_Alphabetic # Mn [6] ARABIC CURLY FATHA..ARABIC CURLY KASRATAN +08E3..08E9 ; Other_Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN 08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA 0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA 093A ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN OE @@ -560,8 +564,6 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -19B0..19C0 ; Other_Alphabetic # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C8..19C9 ; Other_Alphabetic # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Other_Alphabetic # Mn BUGINESE VOWEL SIGN AE @@ -605,7 +607,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA -A69F ; Other_Alphabetic # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Other_Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO @@ -672,7 +674,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU -11301 ; Other_Alphabetic # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Other_Alphabetic # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Other_Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; Other_Alphabetic # Mn GRANTHA VOWEL SIGN II @@ -693,6 +695,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 115B8..115BB ; Other_Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Other_Alphabetic # Mc SIDDHAM SIGN VISARGA +115DC..115DD ; Other_Alphabetic # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11630..11632 ; Other_Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Other_Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Other_Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU @@ -704,6 +707,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU +1171D..1171F ; Other_Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Other_Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Other_Alphabetic # Mc AHOM VOWEL SIGN E +11727..1172A ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM 16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK @@ -720,15 +728,16 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Ideographic # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Ideographic # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 75633 +# Total code points: 81404 # ================================================ @@ -773,7 +782,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH -08E4..08FE ; Diacritic # Mn [27] ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT +08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT 093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA 094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA 0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT @@ -877,7 +886,7 @@ AB5C..AB5F ; Diacritic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FE20..FE2D ; Diacritic # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F ; Diacritic # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK @@ -889,6 +898,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA 11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA 111C0 ; Diacritic # Mc SHARADA SIGN VIRAMA +111CA..111CC ; Diacritic # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA 11236 ; Diacritic # Mn KHOJKI SIGN NUKTA 112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA @@ -901,6 +911,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1163F ; Diacritic # Mn MODI SIGN VIRAMA 116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA 116B7 ; Diacritic # Mn TAKRI SIGN NUKTA +1172B ; Diacritic # Mn AHOM SIGN KILLER 16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 @@ -911,7 +922,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -# Total code points: 766 +# Total code points: 773 # ================================================ @@ -1053,7 +1064,7 @@ FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND # ================================================ 3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Unified_Ideograph # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Unified_Ideograph # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 @@ -1064,8 +1075,9 @@ FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..C 20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 -# Total code points: 74617 +# Total code points: 80388 # ================================================ @@ -1094,9 +1106,9 @@ E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] . 2329 ; Deprecated # Ps LEFT-POINTING ANGLE BRACKET 232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET E0001 ; Deprecated # Cf LANGUAGE TAG -E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG +E007F ; Deprecated # Cf CANCEL TAG -# Total code points: 111 +# Total code points: 16 # ================================================ @@ -1138,11 +1150,13 @@ E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG 0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI 0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI +19B5..19B7 ; Logical_Order_Exception # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O +19BA ; Logical_Order_Exception # Lo NEW TAI LUE VOWEL SIGN AY AAB5..AAB6 ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY -# Total code points: 15 +# Total code points: 19 # ================================================ @@ -1213,18 +1227,22 @@ FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP 11141..11143 ; STerm # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111CD ; STerm # Po SHARADA SUTRA MARK +111DE..111DF ; STerm # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 11238..11239 ; STerm # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA 1123B..1123C ; STerm # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK +112A9 ; STerm # Po MULTANI SECTION MARK 115C2..115C3 ; STerm # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA -115C9 ; STerm # Po SIDDHAM END OF TEXT MARK +115C9..115D7 ; STerm # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; STerm # Po [2] MODI DANDA..MODI DOUBLE DANDA +1173C..1173E ; STerm # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; STerm # Po BASSA VAH FULL STOP 16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB 16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS 1BC9F ; STerm # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1DA88 ; STerm # Po SIGNWRITING FULL STOP -# Total code points: 99 +# Total code points: 120 # ================================================ @@ -1432,7 +1450,9 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S 2BBD..2BC8 ; Pattern_Syntax # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BC9 ; Pattern_Syntax # Cn 2BCA..2BD1 ; Pattern_Syntax # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN -2BD2..2BFF ; Pattern_Syntax # Cn [46] .. +2BD2..2BEB ; Pattern_Syntax # Cn [26] .. +2BEC..2BEF ; Pattern_Syntax # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BF0..2BFF ; Pattern_Syntax # Cn [16] .. 2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET diff --git a/jdk/make/data/unicodedata/Scripts.txt b/jdk/make/data/unicodedata/Scripts.txt index 0b69438a571..7e42740407c 100644 --- a/jdk/make/data/unicodedata/Scripts.txt +++ b/jdk/make/data/unicodedata/Scripts.txt @@ -1,10 +1,16 @@ -# Scripts-7.0.0.txt -# Date: 2014-05-15, 00:11:35 GMT [MD] +# Scripts-8.0.0.txt +# Date: 2015-03-11, 22:29:42 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ +# For more information, see: +# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/ +# Especially the sections: +# http://www.unicode.org/reports/tr24/#Assignment_Script_Values +# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values +# # ================================================ @@ -89,7 +95,6 @@ 061C ; Common # Cf ARABIC LETTER MARK 061F ; Common # Po ARABIC QUESTION MARK 0640 ; Common # Lm ARABIC TATWEEL -0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 06DD ; Common # Cf ARABIC END OF AYAH 0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT @@ -148,7 +153,7 @@ 208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20BD ; Common # Sc [30] EURO-CURRENCY SIGN..RUBLE SIGN +20A0..20BE ; Common # Sc [31] EURO-CURRENCY SIGN..LARI SIGN 2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2102 ; Common # L& DOUBLE-STRUCK CAPITAL C 2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA @@ -182,6 +187,7 @@ 214F ; Common # So SYMBOL FOR SAMARITAN SOURCE 2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2189 ; Common # No VULGAR FRACTION ZERO THIRDS +218A..218B ; Common # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE @@ -304,6 +310,7 @@ 2B98..2BB9 ; Common # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8 ; Common # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1 ; Common # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN +2BEC..2BEF ; Common # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET @@ -512,7 +519,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS +1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G @@ -571,16 +578,11 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT -1F300..1F32C ; Common # So [45] CYCLONE..WIND BLOWING FACE -1F330..1F37D ; Common # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE -1F380..1F3CE ; Common # So [79] RIBBON..RACING CAR -1F3D4..1F3F7 ; Common # So [36] SNOW CAPPED MOUNTAIN..LABEL -1F400..1F4FE ; Common # So [255] RAT..PORTABLE STEREO -1F500..1F54A ; Common # So [75] TWISTED RIGHTWARDS ARROWS..DOVE OF PEACE -1F550..1F579 ; Common # So [42] CLOCK FACE ONE OCLOCK..JOYSTICK +1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA +1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 +1F400..1F579 ; Common # So [378] RAT..JOYSTICK 1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX -1F5A5..1F642 ; Common # So [158] DESKTOP COMPUTER..SLIGHTLY SMILING FACE -1F645..1F6CF ; Common # So [139] FACE WITH NO GOOD GESTURE..BED +1F5A5..1F6D0 ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP 1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP 1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE @@ -590,10 +592,13 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS +1F910..1F918 ; Common # So [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS +1F980..1F984 ; Common # So [5] CRAB..UNICORN FACE +1F9C0 ; Common # So CHEESE WEDGE E0001 ; Common # Cf LANGUAGE TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 7129 +# Total code points: 7179 # ================================================ @@ -635,20 +640,21 @@ A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN A770 ; Latin # Lm MODIFIER LETTER US A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AD ; Latin # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1 ; Latin # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B7 ; Latin # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64 ; Latin # L& LATIN SMALL LETTER INVERTED ALPHA +AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z -# Total code points: 1338 +# Total code points: 1349 # ================================================ @@ -731,9 +737,10 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA A67F ; Cyrillic # Lm CYRILLIC PAYEROK A680..A69B ; Cyrillic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Cyrillic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A69F ; Cyrillic # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Cyrillic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E +FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF -# Total code points: 431 +# Total code points: 434 # ================================================ @@ -788,6 +795,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW +0660..0669 ; Arabic # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE @@ -806,8 +814,8 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V 0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE -08A0..08B2 ; Arabic # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE -08E4..08FF ; Arabic # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA +08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW +08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM @@ -854,7 +862,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA 1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -# Total code points: 1244 +# Total code points: 1257 # ================================================ @@ -902,8 +910,10 @@ A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE +A8FC ; Devanagari # Po DEVANAGARI SIGN SIDDHAM +A8FD ; Devanagari # Lo DEVANAGARI JAIN OM -# Total code points: 152 +# Total code points: 154 # ================================================ @@ -987,8 +997,9 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF0 ; Gujarati # Po GUJARATI ABBREVIATION SIGN 0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN +0AF9 ; Gujarati # Lo GUJARATI LETTER ZHA -# Total code points: 84 +# Total code points: 85 # ================================================ @@ -1064,14 +1075,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; Telugu # So TELUGU SIGN TUUMU -# Total code points: 95 +# Total code points: 96 # ================================================ @@ -1115,14 +1126,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA 0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH 0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61 ; Malayalam # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS 0D79 ; Malayalam # So MALAYALAM DATE MARK 0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K -# Total code points: 99 +# Total code points: 100 # ================================================ @@ -1358,9 +1369,11 @@ AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO # ================================================ -13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +13A0..13F5 ; Cherokee # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD ; Cherokee # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV +AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA -# Total code points: 85 +# Total code points: 172 # ================================================ @@ -1472,15 +1485,16 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Han # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Han # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 75963 +# Total code points: 81734 # ================================================ @@ -1680,9 +1694,7 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2 # ================================================ 1980..19AB ; New_Tai_Lue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA -19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 +19B0..19C9 ; New_Tai_Lue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE 19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV @@ -1770,11 +1782,12 @@ A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI # ================================================ -12000..12398 ; Cuneiform # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399 ; Cuneiform # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Cuneiform # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474 ; Cuneiform # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON +12480..12543 ; Cuneiform # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -# Total code points: 1037 +# Total code points: 1234 # ================================================ @@ -2151,9 +2164,12 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ 109A0..109B7 ; Meroitic_Cursive # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA +109BC..109BD ; Meroitic_Cursive # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109BE..109BF ; Meroitic_Cursive # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN +109C0..109CF ; Meroitic_Cursive # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY +109D2..109FF ; Meroitic_Cursive # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS -# Total code points: 26 +# Total code points: 90 # ================================================ @@ -2180,12 +2196,16 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 111B6..111BE ; Sharada # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; Sharada # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM -111C5..111C8 ; Sharada # Po [4] SHARADA DANDA..SHARADA SEPARATOR +111C5..111C9 ; Sharada # Po [5] SHARADA DANDA..SHARADA SANDHI MARK +111CA..111CC ; Sharada # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111CD ; Sharada # Po SHARADA SUTRA MARK 111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; Sharada # Lo SHARADA EKAM +111DB ; Sharada # Po SHARADA SIGN SIDDHAM +111DC ; Sharada # Lo SHARADA HEADSTROKE +111DD..111DF ; Sharada # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 -# Total code points: 85 +# Total code points: 94 # ================================================ @@ -2243,7 +2263,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ -11301 ; Grantha # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Grantha # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Grantha # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Grantha # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -2258,13 +2278,14 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11341..11344 ; Grantha # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Grantha # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; Grantha # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11350 ; Grantha # Lo GRANTHA OM 11357 ; Grantha # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; Grantha # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Grantha # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; Grantha # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Grantha # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -# Total code points: 83 +# Total code points: 85 # ================================================ @@ -2407,9 +2428,11 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 115BC..115BD ; Siddham # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Siddham # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; Siddham # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA -115C1..115C9 ; Siddham # Po [9] SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK +115C1..115D7 ; Siddham # Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES +115D8..115DB ; Siddham # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U +115DC..115DD ; Siddham # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU -# Total code points: 72 +# Total code points: 92 # ================================================ @@ -2448,4 +2471,69 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # Total code points: 84 +# ================================================ + +11700..11719 ; Ahom # Lo [26] AHOM LETTER KA..AHOM LETTER JHA +1171D..1171F ; Ahom # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Ahom # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Ahom # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Ahom # Mc AHOM VOWEL SIGN E +11727..1172B ; Ahom # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +11730..11739 ; Ahom # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY +1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +1173F ; Ahom # So AHOM SYMBOL VI + +# Total code points: 57 + +# ================================================ + +14400..14646 ; Anatolian_Hieroglyphs # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + +# Total code points: 583 + +# ================================================ + +108E0..108F2 ; Hatran # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; Hatran # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +108FB..108FF ; Hatran # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED + +# Total code points: 26 + +# ================================================ + +11280..11286 ; Multani # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; Multani # Lo MULTANI LETTER GHA +1128A..1128D ; Multani # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; Multani # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; Multani # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA +112A9 ; Multani # Po MULTANI SECTION MARK + +# Total code points: 38 + +# ================================================ + +10C80..10CB2 ; Old_Hungarian # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; Old_Hungarian # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10CFA..10CFF ; Old_Hungarian # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND + +# Total code points: 108 + +# ================================================ + +1D800..1D9FF ; SignWriting # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD +1DA00..1DA36 ; SignWriting # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA37..1DA3A ; SignWriting # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE +1DA3B..1DA6C ; SignWriting # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA6D..1DA74 ; SignWriting # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING +1DA75 ; SignWriting # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA76..1DA83 ; SignWriting # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH +1DA84 ; SignWriting # Mn SIGNWRITING LOCATION HEAD NECK +1DA85..1DA86 ; SignWriting # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS +1DA87..1DA8B ; SignWriting # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS +1DA9B..1DA9F ; SignWriting # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; SignWriting # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + +# Total code points: 672 + # EOF diff --git a/jdk/make/data/unicodedata/SpecialCasing.txt b/jdk/make/data/unicodedata/SpecialCasing.txt index 43645bd2d10..8de6462f18c 100644 --- a/jdk/make/data/unicodedata/SpecialCasing.txt +++ b/jdk/make/data/unicodedata/SpecialCasing.txt @@ -1,5 +1,5 @@ -# SpecialCasing-7.0.0.txt -# Date: 2014-03-18, 07:18:02 GMT [MD] +# SpecialCasing-8.0.0.txt +# Date: 2014-12-16, 23:08:04 GMT [MD] # # Unicode Character Database # Copyright (c) 1991-2014 Unicode, Inc. diff --git a/jdk/make/data/unicodedata/UnicodeData.txt b/jdk/make/data/unicodedata/UnicodeData.txt index 31c8a7eaa04..aa0e914f843 100644 --- a/jdk/make/data/unicodedata/UnicodeData.txt +++ b/jdk/make/data/unicodedata/UnicodeData.txt @@ -667,7 +667,7 @@ 029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; 029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; 029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;A7B2;;A7B2 029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;A7B0;;A7B0 029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; 02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; @@ -2091,6 +2091,9 @@ 08B0;ARABIC LETTER GAF WITH INVERTED STROKE;Lo;0;AL;;;;;N;;;;; 08B1;ARABIC LETTER STRAIGHT WAW;Lo;0;AL;;;;;N;;;;; 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; +08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +08E3;ARABIC TURNED DAMMA BELOW;Mn;220;NSM;;;;;N;;;;; 08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;; 08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;; 08E6;ARABIC CURLY KASRA;Mn;220;NSM;;;;;N;;;;; @@ -2503,6 +2506,7 @@ 0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0AF0;GUJARATI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +0AF9;GUJARATI LETTER ZHA;Lo;0;L;;;;;N;;;;; 0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; @@ -2738,6 +2742,7 @@ 0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; 0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; 0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; +0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;; 0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -2919,6 +2924,7 @@ 0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;; 0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D5F;MALAYALAM LETTER ARCHAIC II;Lo;0;L;;;;;N;;;;; 0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -4289,91 +4295,98 @@ 1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; 1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; 1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +13A0;CHEROKEE LETTER A;Lu;0;L;;;;;N;;;;AB70; +13A1;CHEROKEE LETTER E;Lu;0;L;;;;;N;;;;AB71; +13A2;CHEROKEE LETTER I;Lu;0;L;;;;;N;;;;AB72; +13A3;CHEROKEE LETTER O;Lu;0;L;;;;;N;;;;AB73; +13A4;CHEROKEE LETTER U;Lu;0;L;;;;;N;;;;AB74; +13A5;CHEROKEE LETTER V;Lu;0;L;;;;;N;;;;AB75; +13A6;CHEROKEE LETTER GA;Lu;0;L;;;;;N;;;;AB76; +13A7;CHEROKEE LETTER KA;Lu;0;L;;;;;N;;;;AB77; +13A8;CHEROKEE LETTER GE;Lu;0;L;;;;;N;;;;AB78; +13A9;CHEROKEE LETTER GI;Lu;0;L;;;;;N;;;;AB79; +13AA;CHEROKEE LETTER GO;Lu;0;L;;;;;N;;;;AB7A; +13AB;CHEROKEE LETTER GU;Lu;0;L;;;;;N;;;;AB7B; +13AC;CHEROKEE LETTER GV;Lu;0;L;;;;;N;;;;AB7C; +13AD;CHEROKEE LETTER HA;Lu;0;L;;;;;N;;;;AB7D; +13AE;CHEROKEE LETTER HE;Lu;0;L;;;;;N;;;;AB7E; +13AF;CHEROKEE LETTER HI;Lu;0;L;;;;;N;;;;AB7F; +13B0;CHEROKEE LETTER HO;Lu;0;L;;;;;N;;;;AB80; +13B1;CHEROKEE LETTER HU;Lu;0;L;;;;;N;;;;AB81; +13B2;CHEROKEE LETTER HV;Lu;0;L;;;;;N;;;;AB82; +13B3;CHEROKEE LETTER LA;Lu;0;L;;;;;N;;;;AB83; +13B4;CHEROKEE LETTER LE;Lu;0;L;;;;;N;;;;AB84; +13B5;CHEROKEE LETTER LI;Lu;0;L;;;;;N;;;;AB85; +13B6;CHEROKEE LETTER LO;Lu;0;L;;;;;N;;;;AB86; +13B7;CHEROKEE LETTER LU;Lu;0;L;;;;;N;;;;AB87; +13B8;CHEROKEE LETTER LV;Lu;0;L;;;;;N;;;;AB88; +13B9;CHEROKEE LETTER MA;Lu;0;L;;;;;N;;;;AB89; +13BA;CHEROKEE LETTER ME;Lu;0;L;;;;;N;;;;AB8A; +13BB;CHEROKEE LETTER MI;Lu;0;L;;;;;N;;;;AB8B; +13BC;CHEROKEE LETTER MO;Lu;0;L;;;;;N;;;;AB8C; +13BD;CHEROKEE LETTER MU;Lu;0;L;;;;;N;;;;AB8D; +13BE;CHEROKEE LETTER NA;Lu;0;L;;;;;N;;;;AB8E; +13BF;CHEROKEE LETTER HNA;Lu;0;L;;;;;N;;;;AB8F; +13C0;CHEROKEE LETTER NAH;Lu;0;L;;;;;N;;;;AB90; +13C1;CHEROKEE LETTER NE;Lu;0;L;;;;;N;;;;AB91; +13C2;CHEROKEE LETTER NI;Lu;0;L;;;;;N;;;;AB92; +13C3;CHEROKEE LETTER NO;Lu;0;L;;;;;N;;;;AB93; +13C4;CHEROKEE LETTER NU;Lu;0;L;;;;;N;;;;AB94; +13C5;CHEROKEE LETTER NV;Lu;0;L;;;;;N;;;;AB95; +13C6;CHEROKEE LETTER QUA;Lu;0;L;;;;;N;;;;AB96; +13C7;CHEROKEE LETTER QUE;Lu;0;L;;;;;N;;;;AB97; +13C8;CHEROKEE LETTER QUI;Lu;0;L;;;;;N;;;;AB98; +13C9;CHEROKEE LETTER QUO;Lu;0;L;;;;;N;;;;AB99; +13CA;CHEROKEE LETTER QUU;Lu;0;L;;;;;N;;;;AB9A; +13CB;CHEROKEE LETTER QUV;Lu;0;L;;;;;N;;;;AB9B; +13CC;CHEROKEE LETTER SA;Lu;0;L;;;;;N;;;;AB9C; +13CD;CHEROKEE LETTER S;Lu;0;L;;;;;N;;;;AB9D; +13CE;CHEROKEE LETTER SE;Lu;0;L;;;;;N;;;;AB9E; +13CF;CHEROKEE LETTER SI;Lu;0;L;;;;;N;;;;AB9F; +13D0;CHEROKEE LETTER SO;Lu;0;L;;;;;N;;;;ABA0; +13D1;CHEROKEE LETTER SU;Lu;0;L;;;;;N;;;;ABA1; +13D2;CHEROKEE LETTER SV;Lu;0;L;;;;;N;;;;ABA2; +13D3;CHEROKEE LETTER DA;Lu;0;L;;;;;N;;;;ABA3; +13D4;CHEROKEE LETTER TA;Lu;0;L;;;;;N;;;;ABA4; +13D5;CHEROKEE LETTER DE;Lu;0;L;;;;;N;;;;ABA5; +13D6;CHEROKEE LETTER TE;Lu;0;L;;;;;N;;;;ABA6; +13D7;CHEROKEE LETTER DI;Lu;0;L;;;;;N;;;;ABA7; +13D8;CHEROKEE LETTER TI;Lu;0;L;;;;;N;;;;ABA8; +13D9;CHEROKEE LETTER DO;Lu;0;L;;;;;N;;;;ABA9; +13DA;CHEROKEE LETTER DU;Lu;0;L;;;;;N;;;;ABAA; +13DB;CHEROKEE LETTER DV;Lu;0;L;;;;;N;;;;ABAB; +13DC;CHEROKEE LETTER DLA;Lu;0;L;;;;;N;;;;ABAC; +13DD;CHEROKEE LETTER TLA;Lu;0;L;;;;;N;;;;ABAD; +13DE;CHEROKEE LETTER TLE;Lu;0;L;;;;;N;;;;ABAE; +13DF;CHEROKEE LETTER TLI;Lu;0;L;;;;;N;;;;ABAF; +13E0;CHEROKEE LETTER TLO;Lu;0;L;;;;;N;;;;ABB0; +13E1;CHEROKEE LETTER TLU;Lu;0;L;;;;;N;;;;ABB1; +13E2;CHEROKEE LETTER TLV;Lu;0;L;;;;;N;;;;ABB2; +13E3;CHEROKEE LETTER TSA;Lu;0;L;;;;;N;;;;ABB3; +13E4;CHEROKEE LETTER TSE;Lu;0;L;;;;;N;;;;ABB4; +13E5;CHEROKEE LETTER TSI;Lu;0;L;;;;;N;;;;ABB5; +13E6;CHEROKEE LETTER TSO;Lu;0;L;;;;;N;;;;ABB6; +13E7;CHEROKEE LETTER TSU;Lu;0;L;;;;;N;;;;ABB7; +13E8;CHEROKEE LETTER TSV;Lu;0;L;;;;;N;;;;ABB8; +13E9;CHEROKEE LETTER WA;Lu;0;L;;;;;N;;;;ABB9; +13EA;CHEROKEE LETTER WE;Lu;0;L;;;;;N;;;;ABBA; +13EB;CHEROKEE LETTER WI;Lu;0;L;;;;;N;;;;ABBB; +13EC;CHEROKEE LETTER WO;Lu;0;L;;;;;N;;;;ABBC; +13ED;CHEROKEE LETTER WU;Lu;0;L;;;;;N;;;;ABBD; +13EE;CHEROKEE LETTER WV;Lu;0;L;;;;;N;;;;ABBE; +13EF;CHEROKEE LETTER YA;Lu;0;L;;;;;N;;;;ABBF; +13F0;CHEROKEE LETTER YE;Lu;0;L;;;;;N;;;;13F8; +13F1;CHEROKEE LETTER YI;Lu;0;L;;;;;N;;;;13F9; +13F2;CHEROKEE LETTER YO;Lu;0;L;;;;;N;;;;13FA; +13F3;CHEROKEE LETTER YU;Lu;0;L;;;;;N;;;;13FB; +13F4;CHEROKEE LETTER YV;Lu;0;L;;;;;N;;;;13FC; +13F5;CHEROKEE LETTER MV;Lu;0;L;;;;;N;;;;13FD; +13F8;CHEROKEE SMALL LETTER YE;Ll;0;L;;;;;N;;;13F0;;13F0 +13F9;CHEROKEE SMALL LETTER YI;Ll;0;L;;;;;N;;;13F1;;13F1 +13FA;CHEROKEE SMALL LETTER YO;Ll;0;L;;;;;N;;;13F2;;13F2 +13FB;CHEROKEE SMALL LETTER YU;Ll;0;L;;;;;N;;;13F3;;13F3 +13FC;CHEROKEE SMALL LETTER YV;Ll;0;L;;;;;N;;;13F4;;13F4 +13FD;CHEROKEE SMALL LETTER MV;Ll;0;L;;;;;N;;;13F5;;13F5 1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;; 1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; 1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; @@ -5700,23 +5713,23 @@ 19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; 19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;; 19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; +19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Lo;0;L;;;;;N;;;;; +19B1;NEW TAI LUE VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +19B2;NEW TAI LUE VOWEL SIGN II;Lo;0;L;;;;;N;;;;; +19B3;NEW TAI LUE VOWEL SIGN U;Lo;0;L;;;;;N;;;;; +19B4;NEW TAI LUE VOWEL SIGN UU;Lo;0;L;;;;;N;;;;; +19B5;NEW TAI LUE VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +19B6;NEW TAI LUE VOWEL SIGN AE;Lo;0;L;;;;;N;;;;; +19B7;NEW TAI LUE VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +19B8;NEW TAI LUE VOWEL SIGN OA;Lo;0;L;;;;;N;;;;; +19B9;NEW TAI LUE VOWEL SIGN UE;Lo;0;L;;;;;N;;;;; +19BA;NEW TAI LUE VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +19BB;NEW TAI LUE VOWEL SIGN AAY;Lo;0;L;;;;;N;;;;; +19BC;NEW TAI LUE VOWEL SIGN UY;Lo;0;L;;;;;N;;;;; +19BD;NEW TAI LUE VOWEL SIGN OY;Lo;0;L;;;;;N;;;;; +19BE;NEW TAI LUE VOWEL SIGN OAY;Lo;0;L;;;;;N;;;;; +19BF;NEW TAI LUE VOWEL SIGN UEY;Lo;0;L;;;;;N;;;;; +19C0;NEW TAI LUE VOWEL SIGN IY;Lo;0;L;;;;;N;;;;; 19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; 19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; 19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; @@ -5724,8 +5737,8 @@ 19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; 19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; 19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; +19C8;NEW TAI LUE TONE MARK-1;Lo;0;L;;;;;N;;;;; +19C9;NEW TAI LUE TONE MARK-2;Lo;0;L;;;;;N;;;;; 19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -7277,6 +7290,7 @@ 20BB;NORDIC MARK SIGN;Sc;0;ET;;;;;N;;;;; 20BC;MANAT SIGN;Sc;0;ET;;;;;N;;;;; 20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;; +20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; @@ -7448,6 +7462,8 @@ 2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; 2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; 2189;VULGAR FRACTION ZERO THIRDS;No;0;ON; 0030 2044 0033;;;0;N;;;;; +218A;TURNED DIGIT TWO;So;0;ON;;;;;N;;;;; +218B;TURNED DIGIT THREE;So;0;ON;;;;;N;;;;; 2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; 2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; 2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; @@ -10015,6 +10031,10 @@ 2BCF;ROTATED WHITE FOUR POINTED CUSP;So;0;ON;;;;;N;;;;; 2BD0;SQUARE POSITION INDICATOR;So;0;ON;;;;;N;;;;; 2BD1;UNCERTAINTY SIGN;So;0;ON;;;;;N;;;;; +2BEC;LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BED;UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BEE;RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BEF;DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; 2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; 2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; 2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; @@ -11942,7 +11962,7 @@ 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; -9FCC;;Lo;0;L;;;;;N;;;;; +9FD5;;Lo;0;L;;;;;N;;;;; A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; @@ -13605,6 +13625,7 @@ A69A;CYRILLIC CAPITAL LETTER CROSSED O;Lu;0;L;;;;;N;;;;A69B; A69B;CYRILLIC SMALL LETTER CROSSED O;Ll;0;L;;;;;N;;;A69A;;A69A A69C;MODIFIER LETTER CYRILLIC HARD SIGN;Lm;0;L; 044A;;;;N;;;;; A69D;MODIFIER LETTER CYRILLIC SOFT SIGN;Lm;0;L; 044C;;;;N;;;;; +A69E;COMBINING CYRILLIC LETTER EF;Mn;230;NSM;;;;;N;;;;; A69F;COMBINING CYRILLIC LETTER IOTIFIED E;Mn;230;NSM;;;;;N;;;;; A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;; A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;; @@ -13837,6 +13858,7 @@ A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B A78D;LATIN CAPITAL LETTER TURNED H;Lu;0;L;;;;;N;;;;0265; A78E;LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT;Ll;0;L;;;;;N;;;;; +A78F;LATIN LETTER SINOLOGICAL DOT;Lo;0;L;;;;;N;;;;; A790;LATIN CAPITAL LETTER N WITH DESCENDER;Lu;0;L;;;;;N;;;;A791; A791;LATIN SMALL LETTER N WITH DESCENDER;Ll;0;L;;;;;N;;;A790;;A790 A792;LATIN CAPITAL LETTER C WITH BAR;Lu;0;L;;;;;N;;;;A793; @@ -13869,6 +13891,12 @@ A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261; A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C; A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E; A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287; +A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D; +A7B3;LATIN CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;AB53; +A7B4;LATIN CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;A7B5; +A7B5;LATIN SMALL LETTER BETA;Ll;0;L;;;;;N;;;A7B4;;A7B4 +A7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7; +A7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;; A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L; 0126;;;;N;;;;; A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L; 0153;;;;N;;;;; @@ -14097,6 +14125,8 @@ A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;; A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;; A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;; A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;; +A8FC;DEVANAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;; +A8FD;DEVANAGARI JAIN OM;Lo;0;L;;;;;N;;;;; A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -14610,7 +14640,7 @@ AB4F;LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG;Ll;0;L;;;;;N;;;;; AB50;LATIN SMALL LETTER UI;Ll;0;L;;;;;N;;;;; AB51;LATIN SMALL LETTER TURNED UI;Ll;0;L;;;;;N;;;;; AB52;LATIN SMALL LETTER U WITH LEFT HOOK;Ll;0;L;;;;;N;;;;; -AB53;LATIN SMALL LETTER CHI;Ll;0;L;;;;;N;;;;; +AB53;LATIN SMALL LETTER CHI;Ll;0;L;;;;;N;;;A7B3;;A7B3 AB54;LATIN SMALL LETTER CHI WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;; AB55;LATIN SMALL LETTER CHI WITH LOW LEFT SERIF;Ll;0;L;;;;;N;;;;; AB56;LATIN SMALL LETTER X WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;; @@ -14623,8 +14653,92 @@ AB5C;MODIFIER LETTER SMALL HENG;Lm;0;L; A727;;;;N;;;;; AB5D;MODIFIER LETTER SMALL L WITH INVERTED LAZY S;Lm;0;L; AB37;;;;N;;;;; AB5E;MODIFIER LETTER SMALL L WITH MIDDLE TILDE;Lm;0;L; 026B;;;;N;;;;; AB5F;MODIFIER LETTER SMALL U WITH LEFT HOOK;Lm;0;L; AB52;;;;N;;;;; +AB60;LATIN SMALL LETTER SAKHA YAT;Ll;0;L;;;;;N;;;;; +AB61;LATIN SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;;; +AB62;LATIN SMALL LETTER OPEN OE;Ll;0;L;;;;;N;;;;; +AB63;LATIN SMALL LETTER UO;Ll;0;L;;;;;N;;;;; AB64;LATIN SMALL LETTER INVERTED ALPHA;Ll;0;L;;;;;N;;;;; AB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;; +AB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0 +AB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1 +AB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2 +AB73;CHEROKEE SMALL LETTER O;Ll;0;L;;;;;N;;;13A3;;13A3 +AB74;CHEROKEE SMALL LETTER U;Ll;0;L;;;;;N;;;13A4;;13A4 +AB75;CHEROKEE SMALL LETTER V;Ll;0;L;;;;;N;;;13A5;;13A5 +AB76;CHEROKEE SMALL LETTER GA;Ll;0;L;;;;;N;;;13A6;;13A6 +AB77;CHEROKEE SMALL LETTER KA;Ll;0;L;;;;;N;;;13A7;;13A7 +AB78;CHEROKEE SMALL LETTER GE;Ll;0;L;;;;;N;;;13A8;;13A8 +AB79;CHEROKEE SMALL LETTER GI;Ll;0;L;;;;;N;;;13A9;;13A9 +AB7A;CHEROKEE SMALL LETTER GO;Ll;0;L;;;;;N;;;13AA;;13AA +AB7B;CHEROKEE SMALL LETTER GU;Ll;0;L;;;;;N;;;13AB;;13AB +AB7C;CHEROKEE SMALL LETTER GV;Ll;0;L;;;;;N;;;13AC;;13AC +AB7D;CHEROKEE SMALL LETTER HA;Ll;0;L;;;;;N;;;13AD;;13AD +AB7E;CHEROKEE SMALL LETTER HE;Ll;0;L;;;;;N;;;13AE;;13AE +AB7F;CHEROKEE SMALL LETTER HI;Ll;0;L;;;;;N;;;13AF;;13AF +AB80;CHEROKEE SMALL LETTER HO;Ll;0;L;;;;;N;;;13B0;;13B0 +AB81;CHEROKEE SMALL LETTER HU;Ll;0;L;;;;;N;;;13B1;;13B1 +AB82;CHEROKEE SMALL LETTER HV;Ll;0;L;;;;;N;;;13B2;;13B2 +AB83;CHEROKEE SMALL LETTER LA;Ll;0;L;;;;;N;;;13B3;;13B3 +AB84;CHEROKEE SMALL LETTER LE;Ll;0;L;;;;;N;;;13B4;;13B4 +AB85;CHEROKEE SMALL LETTER LI;Ll;0;L;;;;;N;;;13B5;;13B5 +AB86;CHEROKEE SMALL LETTER LO;Ll;0;L;;;;;N;;;13B6;;13B6 +AB87;CHEROKEE SMALL LETTER LU;Ll;0;L;;;;;N;;;13B7;;13B7 +AB88;CHEROKEE SMALL LETTER LV;Ll;0;L;;;;;N;;;13B8;;13B8 +AB89;CHEROKEE SMALL LETTER MA;Ll;0;L;;;;;N;;;13B9;;13B9 +AB8A;CHEROKEE SMALL LETTER ME;Ll;0;L;;;;;N;;;13BA;;13BA +AB8B;CHEROKEE SMALL LETTER MI;Ll;0;L;;;;;N;;;13BB;;13BB +AB8C;CHEROKEE SMALL LETTER MO;Ll;0;L;;;;;N;;;13BC;;13BC +AB8D;CHEROKEE SMALL LETTER MU;Ll;0;L;;;;;N;;;13BD;;13BD +AB8E;CHEROKEE SMALL LETTER NA;Ll;0;L;;;;;N;;;13BE;;13BE +AB8F;CHEROKEE SMALL LETTER HNA;Ll;0;L;;;;;N;;;13BF;;13BF +AB90;CHEROKEE SMALL LETTER NAH;Ll;0;L;;;;;N;;;13C0;;13C0 +AB91;CHEROKEE SMALL LETTER NE;Ll;0;L;;;;;N;;;13C1;;13C1 +AB92;CHEROKEE SMALL LETTER NI;Ll;0;L;;;;;N;;;13C2;;13C2 +AB93;CHEROKEE SMALL LETTER NO;Ll;0;L;;;;;N;;;13C3;;13C3 +AB94;CHEROKEE SMALL LETTER NU;Ll;0;L;;;;;N;;;13C4;;13C4 +AB95;CHEROKEE SMALL LETTER NV;Ll;0;L;;;;;N;;;13C5;;13C5 +AB96;CHEROKEE SMALL LETTER QUA;Ll;0;L;;;;;N;;;13C6;;13C6 +AB97;CHEROKEE SMALL LETTER QUE;Ll;0;L;;;;;N;;;13C7;;13C7 +AB98;CHEROKEE SMALL LETTER QUI;Ll;0;L;;;;;N;;;13C8;;13C8 +AB99;CHEROKEE SMALL LETTER QUO;Ll;0;L;;;;;N;;;13C9;;13C9 +AB9A;CHEROKEE SMALL LETTER QUU;Ll;0;L;;;;;N;;;13CA;;13CA +AB9B;CHEROKEE SMALL LETTER QUV;Ll;0;L;;;;;N;;;13CB;;13CB +AB9C;CHEROKEE SMALL LETTER SA;Ll;0;L;;;;;N;;;13CC;;13CC +AB9D;CHEROKEE SMALL LETTER S;Ll;0;L;;;;;N;;;13CD;;13CD +AB9E;CHEROKEE SMALL LETTER SE;Ll;0;L;;;;;N;;;13CE;;13CE +AB9F;CHEROKEE SMALL LETTER SI;Ll;0;L;;;;;N;;;13CF;;13CF +ABA0;CHEROKEE SMALL LETTER SO;Ll;0;L;;;;;N;;;13D0;;13D0 +ABA1;CHEROKEE SMALL LETTER SU;Ll;0;L;;;;;N;;;13D1;;13D1 +ABA2;CHEROKEE SMALL LETTER SV;Ll;0;L;;;;;N;;;13D2;;13D2 +ABA3;CHEROKEE SMALL LETTER DA;Ll;0;L;;;;;N;;;13D3;;13D3 +ABA4;CHEROKEE SMALL LETTER TA;Ll;0;L;;;;;N;;;13D4;;13D4 +ABA5;CHEROKEE SMALL LETTER DE;Ll;0;L;;;;;N;;;13D5;;13D5 +ABA6;CHEROKEE SMALL LETTER TE;Ll;0;L;;;;;N;;;13D6;;13D6 +ABA7;CHEROKEE SMALL LETTER DI;Ll;0;L;;;;;N;;;13D7;;13D7 +ABA8;CHEROKEE SMALL LETTER TI;Ll;0;L;;;;;N;;;13D8;;13D8 +ABA9;CHEROKEE SMALL LETTER DO;Ll;0;L;;;;;N;;;13D9;;13D9 +ABAA;CHEROKEE SMALL LETTER DU;Ll;0;L;;;;;N;;;13DA;;13DA +ABAB;CHEROKEE SMALL LETTER DV;Ll;0;L;;;;;N;;;13DB;;13DB +ABAC;CHEROKEE SMALL LETTER DLA;Ll;0;L;;;;;N;;;13DC;;13DC +ABAD;CHEROKEE SMALL LETTER TLA;Ll;0;L;;;;;N;;;13DD;;13DD +ABAE;CHEROKEE SMALL LETTER TLE;Ll;0;L;;;;;N;;;13DE;;13DE +ABAF;CHEROKEE SMALL LETTER TLI;Ll;0;L;;;;;N;;;13DF;;13DF +ABB0;CHEROKEE SMALL LETTER TLO;Ll;0;L;;;;;N;;;13E0;;13E0 +ABB1;CHEROKEE SMALL LETTER TLU;Ll;0;L;;;;;N;;;13E1;;13E1 +ABB2;CHEROKEE SMALL LETTER TLV;Ll;0;L;;;;;N;;;13E2;;13E2 +ABB3;CHEROKEE SMALL LETTER TSA;Ll;0;L;;;;;N;;;13E3;;13E3 +ABB4;CHEROKEE SMALL LETTER TSE;Ll;0;L;;;;;N;;;13E4;;13E4 +ABB5;CHEROKEE SMALL LETTER TSI;Ll;0;L;;;;;N;;;13E5;;13E5 +ABB6;CHEROKEE SMALL LETTER TSO;Ll;0;L;;;;;N;;;13E6;;13E6 +ABB7;CHEROKEE SMALL LETTER TSU;Ll;0;L;;;;;N;;;13E7;;13E7 +ABB8;CHEROKEE SMALL LETTER TSV;Ll;0;L;;;;;N;;;13E8;;13E8 +ABB9;CHEROKEE SMALL LETTER WA;Ll;0;L;;;;;N;;;13E9;;13E9 +ABBA;CHEROKEE SMALL LETTER WE;Ll;0;L;;;;;N;;;13EA;;13EA +ABBB;CHEROKEE SMALL LETTER WI;Ll;0;L;;;;;N;;;13EB;;13EB +ABBC;CHEROKEE SMALL LETTER WO;Ll;0;L;;;;;N;;;13EC;;13EC +ABBD;CHEROKEE SMALL LETTER WU;Ll;0;L;;;;;N;;;13ED;;13ED +ABBE;CHEROKEE SMALL LETTER WV;Ll;0;L;;;;;N;;;13EE;;13EE +ABBF;CHEROKEE SMALL LETTER YA;Ll;0;L;;;;;N;;;13EF;;13EF ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;; ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;; ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;; @@ -15944,6 +16058,8 @@ FE2A;COMBINING TILDE RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2B;COMBINING MACRON LEFT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2C;COMBINING MACRON RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2D;COMBINING CONJOINING MACRON BELOW;Mn;220;NSM;;;;;N;;;;; +FE2E;COMBINING CYRILLIC TITLO LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE2F;COMBINING CYRILLIC TITLO RIGHT HALF;Mn;230;NSM;;;;;N;;;;; FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; @@ -17830,6 +17946,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 108AD;NABATAEAN NUMBER TEN;No;0;R;;;;10;N;;;;; 108AE;NABATAEAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; 108AF;NABATAEAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +108E0;HATRAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; +108E1;HATRAN LETTER BETH;Lo;0;R;;;;;N;;;;; +108E2;HATRAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; +108E3;HATRAN LETTER DALETH-RESH;Lo;0;R;;;;;N;;;;; +108E4;HATRAN LETTER HE;Lo;0;R;;;;;N;;;;; +108E5;HATRAN LETTER WAW;Lo;0;R;;;;;N;;;;; +108E6;HATRAN LETTER ZAYN;Lo;0;R;;;;;N;;;;; +108E7;HATRAN LETTER HETH;Lo;0;R;;;;;N;;;;; +108E8;HATRAN LETTER TETH;Lo;0;R;;;;;N;;;;; +108E9;HATRAN LETTER YODH;Lo;0;R;;;;;N;;;;; +108EA;HATRAN LETTER KAPH;Lo;0;R;;;;;N;;;;; +108EB;HATRAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +108EC;HATRAN LETTER MEM;Lo;0;R;;;;;N;;;;; +108ED;HATRAN LETTER NUN;Lo;0;R;;;;;N;;;;; +108EE;HATRAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +108EF;HATRAN LETTER AYN;Lo;0;R;;;;;N;;;;; +108F0;HATRAN LETTER PE;Lo;0;R;;;;;N;;;;; +108F1;HATRAN LETTER SADHE;Lo;0;R;;;;;N;;;;; +108F2;HATRAN LETTER QOPH;Lo;0;R;;;;;N;;;;; +108F4;HATRAN LETTER SHIN;Lo;0;R;;;;;N;;;;; +108F5;HATRAN LETTER TAW;Lo;0;R;;;;;N;;;;; +108FB;HATRAN NUMBER ONE;No;0;R;;;;1;N;;;;; +108FC;HATRAN NUMBER FIVE;No;0;R;;;;5;N;;;;; +108FD;HATRAN NUMBER TEN;No;0;R;;;;10;N;;;;; +108FE;HATRAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; +108FF;HATRAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; 10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; 10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; 10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; @@ -17942,8 +18084,72 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 109B5;MEROITIC CURSIVE LETTER TE;Lo;0;R;;;;;N;;;;; 109B6;MEROITIC CURSIVE LETTER TO;Lo;0;R;;;;;N;;;;; 109B7;MEROITIC CURSIVE LETTER DA;Lo;0;R;;;;;N;;;;; +109BC;MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS;No;0;R;;;;11/12;N;;;;; +109BD;MEROITIC CURSIVE FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;; 109BE;MEROITIC CURSIVE LOGOGRAM RMT;Lo;0;R;;;;;N;;;;; 109BF;MEROITIC CURSIVE LOGOGRAM IMN;Lo;0;R;;;;;N;;;;; +109C0;MEROITIC CURSIVE NUMBER ONE;No;0;R;;;;1;N;;;;; +109C1;MEROITIC CURSIVE NUMBER TWO;No;0;R;;;;2;N;;;;; +109C2;MEROITIC CURSIVE NUMBER THREE;No;0;R;;;;3;N;;;;; +109C3;MEROITIC CURSIVE NUMBER FOUR;No;0;R;;;;4;N;;;;; +109C4;MEROITIC CURSIVE NUMBER FIVE;No;0;R;;;;5;N;;;;; +109C5;MEROITIC CURSIVE NUMBER SIX;No;0;R;;;;6;N;;;;; +109C6;MEROITIC CURSIVE NUMBER SEVEN;No;0;R;;;;7;N;;;;; +109C7;MEROITIC CURSIVE NUMBER EIGHT;No;0;R;;;;8;N;;;;; +109C8;MEROITIC CURSIVE NUMBER NINE;No;0;R;;;;9;N;;;;; +109C9;MEROITIC CURSIVE NUMBER TEN;No;0;R;;;;10;N;;;;; +109CA;MEROITIC CURSIVE NUMBER TWENTY;No;0;R;;;;20;N;;;;; +109CB;MEROITIC CURSIVE NUMBER THIRTY;No;0;R;;;;30;N;;;;; +109CC;MEROITIC CURSIVE NUMBER FORTY;No;0;R;;;;40;N;;;;; +109CD;MEROITIC CURSIVE NUMBER FIFTY;No;0;R;;;;50;N;;;;; +109CE;MEROITIC CURSIVE NUMBER SIXTY;No;0;R;;;;60;N;;;;; +109CF;MEROITIC CURSIVE NUMBER SEVENTY;No;0;R;;;;70;N;;;;; +109D2;MEROITIC CURSIVE NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +109D3;MEROITIC CURSIVE NUMBER TWO HUNDRED;No;0;R;;;;200;N;;;;; +109D4;MEROITIC CURSIVE NUMBER THREE HUNDRED;No;0;R;;;;300;N;;;;; +109D5;MEROITIC CURSIVE NUMBER FOUR HUNDRED;No;0;R;;;;400;N;;;;; +109D6;MEROITIC CURSIVE NUMBER FIVE HUNDRED;No;0;R;;;;500;N;;;;; +109D7;MEROITIC CURSIVE NUMBER SIX HUNDRED;No;0;R;;;;600;N;;;;; +109D8;MEROITIC CURSIVE NUMBER SEVEN HUNDRED;No;0;R;;;;700;N;;;;; +109D9;MEROITIC CURSIVE NUMBER EIGHT HUNDRED;No;0;R;;;;800;N;;;;; +109DA;MEROITIC CURSIVE NUMBER NINE HUNDRED;No;0;R;;;;900;N;;;;; +109DB;MEROITIC CURSIVE NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; +109DC;MEROITIC CURSIVE NUMBER TWO THOUSAND;No;0;R;;;;2000;N;;;;; +109DD;MEROITIC CURSIVE NUMBER THREE THOUSAND;No;0;R;;;;3000;N;;;;; +109DE;MEROITIC CURSIVE NUMBER FOUR THOUSAND;No;0;R;;;;4000;N;;;;; +109DF;MEROITIC CURSIVE NUMBER FIVE THOUSAND;No;0;R;;;;5000;N;;;;; +109E0;MEROITIC CURSIVE NUMBER SIX THOUSAND;No;0;R;;;;6000;N;;;;; +109E1;MEROITIC CURSIVE NUMBER SEVEN THOUSAND;No;0;R;;;;7000;N;;;;; +109E2;MEROITIC CURSIVE NUMBER EIGHT THOUSAND;No;0;R;;;;8000;N;;;;; +109E3;MEROITIC CURSIVE NUMBER NINE THOUSAND;No;0;R;;;;9000;N;;;;; +109E4;MEROITIC CURSIVE NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;; +109E5;MEROITIC CURSIVE NUMBER TWENTY THOUSAND;No;0;R;;;;20000;N;;;;; +109E6;MEROITIC CURSIVE NUMBER THIRTY THOUSAND;No;0;R;;;;30000;N;;;;; +109E7;MEROITIC CURSIVE NUMBER FORTY THOUSAND;No;0;R;;;;40000;N;;;;; +109E8;MEROITIC CURSIVE NUMBER FIFTY THOUSAND;No;0;R;;;;50000;N;;;;; +109E9;MEROITIC CURSIVE NUMBER SIXTY THOUSAND;No;0;R;;;;60000;N;;;;; +109EA;MEROITIC CURSIVE NUMBER SEVENTY THOUSAND;No;0;R;;;;70000;N;;;;; +109EB;MEROITIC CURSIVE NUMBER EIGHTY THOUSAND;No;0;R;;;;80000;N;;;;; +109EC;MEROITIC CURSIVE NUMBER NINETY THOUSAND;No;0;R;;;;90000;N;;;;; +109ED;MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND;No;0;R;;;;100000;N;;;;; +109EE;MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND;No;0;R;;;;200000;N;;;;; +109EF;MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND;No;0;R;;;;300000;N;;;;; +109F0;MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND;No;0;R;;;;400000;N;;;;; +109F1;MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND;No;0;R;;;;500000;N;;;;; +109F2;MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND;No;0;R;;;;600000;N;;;;; +109F3;MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND;No;0;R;;;;700000;N;;;;; +109F4;MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND;No;0;R;;;;800000;N;;;;; +109F5;MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND;No;0;R;;;;900000;N;;;;; +109F6;MEROITIC CURSIVE FRACTION ONE TWELFTH;No;0;R;;;;1/12;N;;;;; +109F7;MEROITIC CURSIVE FRACTION TWO TWELFTHS;No;0;R;;;;2/12;N;;;;; +109F8;MEROITIC CURSIVE FRACTION THREE TWELFTHS;No;0;R;;;;3/12;N;;;;; +109F9;MEROITIC CURSIVE FRACTION FOUR TWELFTHS;No;0;R;;;;4/12;N;;;;; +109FA;MEROITIC CURSIVE FRACTION FIVE TWELFTHS;No;0;R;;;;5/12;N;;;;; +109FB;MEROITIC CURSIVE FRACTION SIX TWELFTHS;No;0;R;;;;6/12;N;;;;; +109FC;MEROITIC CURSIVE FRACTION SEVEN TWELFTHS;No;0;R;;;;7/12;N;;;;; +109FD;MEROITIC CURSIVE FRACTION EIGHT TWELFTHS;No;0;R;;;;8/12;N;;;;; +109FE;MEROITIC CURSIVE FRACTION NINE TWELFTHS;No;0;R;;;;9/12;N;;;;; +109FF;MEROITIC CURSIVE FRACTION TEN TWELFTHS;No;0;R;;;;10/12;N;;;;; 10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; 10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; @@ -18344,6 +18550,114 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;; 10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;; 10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;; +10C80;OLD HUNGARIAN CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10CC0; +10C81;OLD HUNGARIAN CAPITAL LETTER AA;Lu;0;R;;;;;N;;;;10CC1; +10C82;OLD HUNGARIAN CAPITAL LETTER EB;Lu;0;R;;;;;N;;;;10CC2; +10C83;OLD HUNGARIAN CAPITAL LETTER AMB;Lu;0;R;;;;;N;;;;10CC3; +10C84;OLD HUNGARIAN CAPITAL LETTER EC;Lu;0;R;;;;;N;;;;10CC4; +10C85;OLD HUNGARIAN CAPITAL LETTER ENC;Lu;0;R;;;;;N;;;;10CC5; +10C86;OLD HUNGARIAN CAPITAL LETTER ECS;Lu;0;R;;;;;N;;;;10CC6; +10C87;OLD HUNGARIAN CAPITAL LETTER ED;Lu;0;R;;;;;N;;;;10CC7; +10C88;OLD HUNGARIAN CAPITAL LETTER AND;Lu;0;R;;;;;N;;;;10CC8; +10C89;OLD HUNGARIAN CAPITAL LETTER E;Lu;0;R;;;;;N;;;;10CC9; +10C8A;OLD HUNGARIAN CAPITAL LETTER CLOSE E;Lu;0;R;;;;;N;;;;10CCA; +10C8B;OLD HUNGARIAN CAPITAL LETTER EE;Lu;0;R;;;;;N;;;;10CCB; +10C8C;OLD HUNGARIAN CAPITAL LETTER EF;Lu;0;R;;;;;N;;;;10CCC; +10C8D;OLD HUNGARIAN CAPITAL LETTER EG;Lu;0;R;;;;;N;;;;10CCD; +10C8E;OLD HUNGARIAN CAPITAL LETTER EGY;Lu;0;R;;;;;N;;;;10CCE; +10C8F;OLD HUNGARIAN CAPITAL LETTER EH;Lu;0;R;;;;;N;;;;10CCF; +10C90;OLD HUNGARIAN CAPITAL LETTER I;Lu;0;R;;;;;N;;;;10CD0; +10C91;OLD HUNGARIAN CAPITAL LETTER II;Lu;0;R;;;;;N;;;;10CD1; +10C92;OLD HUNGARIAN CAPITAL LETTER EJ;Lu;0;R;;;;;N;;;;10CD2; +10C93;OLD HUNGARIAN CAPITAL LETTER EK;Lu;0;R;;;;;N;;;;10CD3; +10C94;OLD HUNGARIAN CAPITAL LETTER AK;Lu;0;R;;;;;N;;;;10CD4; +10C95;OLD HUNGARIAN CAPITAL LETTER UNK;Lu;0;R;;;;;N;;;;10CD5; +10C96;OLD HUNGARIAN CAPITAL LETTER EL;Lu;0;R;;;;;N;;;;10CD6; +10C97;OLD HUNGARIAN CAPITAL LETTER ELY;Lu;0;R;;;;;N;;;;10CD7; +10C98;OLD HUNGARIAN CAPITAL LETTER EM;Lu;0;R;;;;;N;;;;10CD8; +10C99;OLD HUNGARIAN CAPITAL LETTER EN;Lu;0;R;;;;;N;;;;10CD9; +10C9A;OLD HUNGARIAN CAPITAL LETTER ENY;Lu;0;R;;;;;N;;;;10CDA; +10C9B;OLD HUNGARIAN CAPITAL LETTER O;Lu;0;R;;;;;N;;;;10CDB; +10C9C;OLD HUNGARIAN CAPITAL LETTER OO;Lu;0;R;;;;;N;;;;10CDC; +10C9D;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;Lu;0;R;;;;;N;;;;10CDD; +10C9E;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;Lu;0;R;;;;;N;;;;10CDE; +10C9F;OLD HUNGARIAN CAPITAL LETTER OEE;Lu;0;R;;;;;N;;;;10CDF; +10CA0;OLD HUNGARIAN CAPITAL LETTER EP;Lu;0;R;;;;;N;;;;10CE0; +10CA1;OLD HUNGARIAN CAPITAL LETTER EMP;Lu;0;R;;;;;N;;;;10CE1; +10CA2;OLD HUNGARIAN CAPITAL LETTER ER;Lu;0;R;;;;;N;;;;10CE2; +10CA3;OLD HUNGARIAN CAPITAL LETTER SHORT ER;Lu;0;R;;;;;N;;;;10CE3; +10CA4;OLD HUNGARIAN CAPITAL LETTER ES;Lu;0;R;;;;;N;;;;10CE4; +10CA5;OLD HUNGARIAN CAPITAL LETTER ESZ;Lu;0;R;;;;;N;;;;10CE5; +10CA6;OLD HUNGARIAN CAPITAL LETTER ET;Lu;0;R;;;;;N;;;;10CE6; +10CA7;OLD HUNGARIAN CAPITAL LETTER ENT;Lu;0;R;;;;;N;;;;10CE7; +10CA8;OLD HUNGARIAN CAPITAL LETTER ETY;Lu;0;R;;;;;N;;;;10CE8; +10CA9;OLD HUNGARIAN CAPITAL LETTER ECH;Lu;0;R;;;;;N;;;;10CE9; +10CAA;OLD HUNGARIAN CAPITAL LETTER U;Lu;0;R;;;;;N;;;;10CEA; +10CAB;OLD HUNGARIAN CAPITAL LETTER UU;Lu;0;R;;;;;N;;;;10CEB; +10CAC;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;Lu;0;R;;;;;N;;;;10CEC; +10CAD;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;Lu;0;R;;;;;N;;;;10CED; +10CAE;OLD HUNGARIAN CAPITAL LETTER EV;Lu;0;R;;;;;N;;;;10CEE; +10CAF;OLD HUNGARIAN CAPITAL LETTER EZ;Lu;0;R;;;;;N;;;;10CEF; +10CB0;OLD HUNGARIAN CAPITAL LETTER EZS;Lu;0;R;;;;;N;;;;10CF0; +10CB1;OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;Lu;0;R;;;;;N;;;;10CF1; +10CB2;OLD HUNGARIAN CAPITAL LETTER US;Lu;0;R;;;;;N;;;;10CF2; +10CC0;OLD HUNGARIAN SMALL LETTER A;Ll;0;R;;;;;N;;;10C80;;10C80 +10CC1;OLD HUNGARIAN SMALL LETTER AA;Ll;0;R;;;;;N;;;10C81;;10C81 +10CC2;OLD HUNGARIAN SMALL LETTER EB;Ll;0;R;;;;;N;;;10C82;;10C82 +10CC3;OLD HUNGARIAN SMALL LETTER AMB;Ll;0;R;;;;;N;;;10C83;;10C83 +10CC4;OLD HUNGARIAN SMALL LETTER EC;Ll;0;R;;;;;N;;;10C84;;10C84 +10CC5;OLD HUNGARIAN SMALL LETTER ENC;Ll;0;R;;;;;N;;;10C85;;10C85 +10CC6;OLD HUNGARIAN SMALL LETTER ECS;Ll;0;R;;;;;N;;;10C86;;10C86 +10CC7;OLD HUNGARIAN SMALL LETTER ED;Ll;0;R;;;;;N;;;10C87;;10C87 +10CC8;OLD HUNGARIAN SMALL LETTER AND;Ll;0;R;;;;;N;;;10C88;;10C88 +10CC9;OLD HUNGARIAN SMALL LETTER E;Ll;0;R;;;;;N;;;10C89;;10C89 +10CCA;OLD HUNGARIAN SMALL LETTER CLOSE E;Ll;0;R;;;;;N;;;10C8A;;10C8A +10CCB;OLD HUNGARIAN SMALL LETTER EE;Ll;0;R;;;;;N;;;10C8B;;10C8B +10CCC;OLD HUNGARIAN SMALL LETTER EF;Ll;0;R;;;;;N;;;10C8C;;10C8C +10CCD;OLD HUNGARIAN SMALL LETTER EG;Ll;0;R;;;;;N;;;10C8D;;10C8D +10CCE;OLD HUNGARIAN SMALL LETTER EGY;Ll;0;R;;;;;N;;;10C8E;;10C8E +10CCF;OLD HUNGARIAN SMALL LETTER EH;Ll;0;R;;;;;N;;;10C8F;;10C8F +10CD0;OLD HUNGARIAN SMALL LETTER I;Ll;0;R;;;;;N;;;10C90;;10C90 +10CD1;OLD HUNGARIAN SMALL LETTER II;Ll;0;R;;;;;N;;;10C91;;10C91 +10CD2;OLD HUNGARIAN SMALL LETTER EJ;Ll;0;R;;;;;N;;;10C92;;10C92 +10CD3;OLD HUNGARIAN SMALL LETTER EK;Ll;0;R;;;;;N;;;10C93;;10C93 +10CD4;OLD HUNGARIAN SMALL LETTER AK;Ll;0;R;;;;;N;;;10C94;;10C94 +10CD5;OLD HUNGARIAN SMALL LETTER UNK;Ll;0;R;;;;;N;;;10C95;;10C95 +10CD6;OLD HUNGARIAN SMALL LETTER EL;Ll;0;R;;;;;N;;;10C96;;10C96 +10CD7;OLD HUNGARIAN SMALL LETTER ELY;Ll;0;R;;;;;N;;;10C97;;10C97 +10CD8;OLD HUNGARIAN SMALL LETTER EM;Ll;0;R;;;;;N;;;10C98;;10C98 +10CD9;OLD HUNGARIAN SMALL LETTER EN;Ll;0;R;;;;;N;;;10C99;;10C99 +10CDA;OLD HUNGARIAN SMALL LETTER ENY;Ll;0;R;;;;;N;;;10C9A;;10C9A +10CDB;OLD HUNGARIAN SMALL LETTER O;Ll;0;R;;;;;N;;;10C9B;;10C9B +10CDC;OLD HUNGARIAN SMALL LETTER OO;Ll;0;R;;;;;N;;;10C9C;;10C9C +10CDD;OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE;Ll;0;R;;;;;N;;;10C9D;;10C9D +10CDE;OLD HUNGARIAN SMALL LETTER RUDIMENTA OE;Ll;0;R;;;;;N;;;10C9E;;10C9E +10CDF;OLD HUNGARIAN SMALL LETTER OEE;Ll;0;R;;;;;N;;;10C9F;;10C9F +10CE0;OLD HUNGARIAN SMALL LETTER EP;Ll;0;R;;;;;N;;;10CA0;;10CA0 +10CE1;OLD HUNGARIAN SMALL LETTER EMP;Ll;0;R;;;;;N;;;10CA1;;10CA1 +10CE2;OLD HUNGARIAN SMALL LETTER ER;Ll;0;R;;;;;N;;;10CA2;;10CA2 +10CE3;OLD HUNGARIAN SMALL LETTER SHORT ER;Ll;0;R;;;;;N;;;10CA3;;10CA3 +10CE4;OLD HUNGARIAN SMALL LETTER ES;Ll;0;R;;;;;N;;;10CA4;;10CA4 +10CE5;OLD HUNGARIAN SMALL LETTER ESZ;Ll;0;R;;;;;N;;;10CA5;;10CA5 +10CE6;OLD HUNGARIAN SMALL LETTER ET;Ll;0;R;;;;;N;;;10CA6;;10CA6 +10CE7;OLD HUNGARIAN SMALL LETTER ENT;Ll;0;R;;;;;N;;;10CA7;;10CA7 +10CE8;OLD HUNGARIAN SMALL LETTER ETY;Ll;0;R;;;;;N;;;10CA8;;10CA8 +10CE9;OLD HUNGARIAN SMALL LETTER ECH;Ll;0;R;;;;;N;;;10CA9;;10CA9 +10CEA;OLD HUNGARIAN SMALL LETTER U;Ll;0;R;;;;;N;;;10CAA;;10CAA +10CEB;OLD HUNGARIAN SMALL LETTER UU;Ll;0;R;;;;;N;;;10CAB;;10CAB +10CEC;OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE;Ll;0;R;;;;;N;;;10CAC;;10CAC +10CED;OLD HUNGARIAN SMALL LETTER RUDIMENTA UE;Ll;0;R;;;;;N;;;10CAD;;10CAD +10CEE;OLD HUNGARIAN SMALL LETTER EV;Ll;0;R;;;;;N;;;10CAE;;10CAE +10CEF;OLD HUNGARIAN SMALL LETTER EZ;Ll;0;R;;;;;N;;;10CAF;;10CAF +10CF0;OLD HUNGARIAN SMALL LETTER EZS;Ll;0;R;;;;;N;;;10CB0;;10CB0 +10CF1;OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;Ll;0;R;;;;;N;;;10CB1;;10CB1 +10CF2;OLD HUNGARIAN SMALL LETTER US;Ll;0;R;;;;;N;;;10CB2;;10CB2 +10CFA;OLD HUNGARIAN NUMBER ONE;No;0;R;;;;1;N;;;;; +10CFB;OLD HUNGARIAN NUMBER FIVE;No;0;R;;;;5;N;;;;; +10CFC;OLD HUNGARIAN NUMBER TEN;No;0;R;;;;10;N;;;;; +10CFD;OLD HUNGARIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;; +10CFE;OLD HUNGARIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +10CFF;OLD HUNGARIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; 10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; 10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; 10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; @@ -18764,6 +19078,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;; 111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;; +111C9;SHARADA SANDHI MARK;Po;0;L;;;;;N;;;;; +111CA;SHARADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;; +111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;; 111CD;SHARADA SUTRA MARK;Po;0;L;;;;;N;;;;; 111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; @@ -18776,6 +19094,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 111D8;SHARADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 111D9;SHARADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 111DA;SHARADA EKAM;Lo;0;L;;;;;N;;;;; +111DB;SHARADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;; +111DC;SHARADA HEADSTROKE;Lo;0;L;;;;;N;;;;; +111DD;SHARADA CONTINUATION SIGN;Po;0;L;;;;;N;;;;; +111DE;SHARADA SECTION MARK-1;Po;0;L;;;;;N;;;;; +111DF;SHARADA SECTION MARK-2;Po;0;L;;;;;N;;;;; 111E1;SINHALA ARCHAIC DIGIT ONE;No;0;L;;;;1;N;;;;; 111E2;SINHALA ARCHAIC DIGIT TWO;No;0;L;;;;2;N;;;;; 111E3;SINHALA ARCHAIC DIGIT THREE;No;0;L;;;;3;N;;;;; @@ -18857,6 +19180,44 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1123B;KHOJKI SECTION MARK;Po;0;L;;;;;N;;;;; 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;; +11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;; +11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;; +11283;MULTANI LETTER E;Lo;0;L;;;;;N;;;;; +11284;MULTANI LETTER KA;Lo;0;L;;;;;N;;;;; +11285;MULTANI LETTER KHA;Lo;0;L;;;;;N;;;;; +11286;MULTANI LETTER GA;Lo;0;L;;;;;N;;;;; +11288;MULTANI LETTER GHA;Lo;0;L;;;;;N;;;;; +1128A;MULTANI LETTER CA;Lo;0;L;;;;;N;;;;; +1128B;MULTANI LETTER CHA;Lo;0;L;;;;;N;;;;; +1128C;MULTANI LETTER JA;Lo;0;L;;;;;N;;;;; +1128D;MULTANI LETTER JJA;Lo;0;L;;;;;N;;;;; +1128F;MULTANI LETTER NYA;Lo;0;L;;;;;N;;;;; +11290;MULTANI LETTER TTA;Lo;0;L;;;;;N;;;;; +11291;MULTANI LETTER TTHA;Lo;0;L;;;;;N;;;;; +11292;MULTANI LETTER DDA;Lo;0;L;;;;;N;;;;; +11293;MULTANI LETTER DDDA;Lo;0;L;;;;;N;;;;; +11294;MULTANI LETTER DDHA;Lo;0;L;;;;;N;;;;; +11295;MULTANI LETTER NNA;Lo;0;L;;;;;N;;;;; +11296;MULTANI LETTER TA;Lo;0;L;;;;;N;;;;; +11297;MULTANI LETTER THA;Lo;0;L;;;;;N;;;;; +11298;MULTANI LETTER DA;Lo;0;L;;;;;N;;;;; +11299;MULTANI LETTER DHA;Lo;0;L;;;;;N;;;;; +1129A;MULTANI LETTER NA;Lo;0;L;;;;;N;;;;; +1129B;MULTANI LETTER PA;Lo;0;L;;;;;N;;;;; +1129C;MULTANI LETTER PHA;Lo;0;L;;;;;N;;;;; +1129D;MULTANI LETTER BA;Lo;0;L;;;;;N;;;;; +1129F;MULTANI LETTER BHA;Lo;0;L;;;;;N;;;;; +112A0;MULTANI LETTER MA;Lo;0;L;;;;;N;;;;; +112A1;MULTANI LETTER YA;Lo;0;L;;;;;N;;;;; +112A2;MULTANI LETTER RA;Lo;0;L;;;;;N;;;;; +112A3;MULTANI LETTER LA;Lo;0;L;;;;;N;;;;; +112A4;MULTANI LETTER VA;Lo;0;L;;;;;N;;;;; +112A5;MULTANI LETTER SA;Lo;0;L;;;;;N;;;;; +112A6;MULTANI LETTER HA;Lo;0;L;;;;;N;;;;; +112A7;MULTANI LETTER RRA;Lo;0;L;;;;;N;;;;; +112A8;MULTANI LETTER RHA;Lo;0;L;;;;;N;;;;; +112A9;MULTANI SECTION MARK;Po;0;L;;;;;N;;;;; 112B0;KHUDAWADI LETTER A;Lo;0;L;;;;;N;;;;; 112B1;KHUDAWADI LETTER AA;Lo;0;L;;;;;N;;;;; 112B2;KHUDAWADI LETTER I;Lo;0;L;;;;;N;;;;; @@ -18926,6 +19287,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 112F7;KHUDAWADI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 112F8;KHUDAWADI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 112F9;KHUDAWADI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11300;GRANTHA SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;; 11301;GRANTHA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11302;GRANTHA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 11303;GRANTHA SIGN VISARGA;Mc;0;L;;;;;N;;;;; @@ -18989,6 +19351,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1134B;GRANTHA VOWEL SIGN OO;Mc;0;L;11347 1133E;;;;N;;;;; 1134C;GRANTHA VOWEL SIGN AU;Mc;0;L;11347 11357;;;;N;;;;; 1134D;GRANTHA SIGN VIRAMA;Mc;9;L;;;;;N;;;;; +11350;GRANTHA OM;Lo;0;L;;;;;N;;;;; 11357;GRANTHA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 1135D;GRANTHA SIGN PLUTA;Lo;0;L;;;;;N;;;;; 1135E;GRANTHA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;; @@ -19163,6 +19526,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 115C7;SIDDHAM REPETITION MARK-2;Po;0;L;;;;;N;;;;; 115C8;SIDDHAM REPETITION MARK-3;Po;0;L;;;;;N;;;;; 115C9;SIDDHAM END OF TEXT MARK;Po;0;L;;;;;N;;;;; +115CA;SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS;Po;0;L;;;;;N;;;;; +115CB;SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;; +115CC;SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;; +115CD;SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;; +115CE;SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115CF;SIDDHAM SECTION MARK DOUBLE RING;Po;0;L;;;;;N;;;;; +115D0;SIDDHAM SECTION MARK DOUBLE RING WITH RAYS;Po;0;L;;;;;N;;;;; +115D1;SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D2;SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D3;SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D4;SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D5;SIDDHAM SECTION MARK WITH CIRCLES AND RAYS;Po;0;L;;;;;N;;;;; +115D6;SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES;Po;0;L;;;;;N;;;;; +115D7;SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES;Po;0;L;;;;;N;;;;; +115D8;SIDDHAM LETTER THREE-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;; +115D9;SIDDHAM LETTER TWO-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;; +115DA;SIDDHAM LETTER TWO-CIRCLE ALTERNATE II;Lo;0;L;;;;;N;;;;; +115DB;SIDDHAM LETTER ALTERNATE U;Lo;0;L;;;;;N;;;;; +115DC;SIDDHAM VOWEL SIGN ALTERNATE U;Mn;0;NSM;;;;;N;;;;; +115DD;SIDDHAM VOWEL SIGN ALTERNATE UU;Mn;0;NSM;;;;;N;;;;; 11600;MODI LETTER A;Lo;0;L;;;;;N;;;;; 11601;MODI LETTER AA;Lo;0;L;;;;;N;;;;; 11602;MODI LETTER I;Lo;0;L;;;;;N;;;;; @@ -19308,6 +19691,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;; +11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;; +11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;; +11703;AHOM LETTER NA;Lo;0;L;;;;;N;;;;; +11704;AHOM LETTER TA;Lo;0;L;;;;;N;;;;; +11705;AHOM LETTER ALTERNATE TA;Lo;0;L;;;;;N;;;;; +11706;AHOM LETTER PA;Lo;0;L;;;;;N;;;;; +11707;AHOM LETTER PHA;Lo;0;L;;;;;N;;;;; +11708;AHOM LETTER BA;Lo;0;L;;;;;N;;;;; +11709;AHOM LETTER MA;Lo;0;L;;;;;N;;;;; +1170A;AHOM LETTER JA;Lo;0;L;;;;;N;;;;; +1170B;AHOM LETTER CHA;Lo;0;L;;;;;N;;;;; +1170C;AHOM LETTER THA;Lo;0;L;;;;;N;;;;; +1170D;AHOM LETTER RA;Lo;0;L;;;;;N;;;;; +1170E;AHOM LETTER LA;Lo;0;L;;;;;N;;;;; +1170F;AHOM LETTER SA;Lo;0;L;;;;;N;;;;; +11710;AHOM LETTER NYA;Lo;0;L;;;;;N;;;;; +11711;AHOM LETTER HA;Lo;0;L;;;;;N;;;;; +11712;AHOM LETTER A;Lo;0;L;;;;;N;;;;; +11713;AHOM LETTER DA;Lo;0;L;;;;;N;;;;; +11714;AHOM LETTER DHA;Lo;0;L;;;;;N;;;;; +11715;AHOM LETTER GA;Lo;0;L;;;;;N;;;;; +11716;AHOM LETTER ALTERNATE GA;Lo;0;L;;;;;N;;;;; +11717;AHOM LETTER GHA;Lo;0;L;;;;;N;;;;; +11718;AHOM LETTER BHA;Lo;0;L;;;;;N;;;;; +11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;; +1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; +1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;; +1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;; +11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; +11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +11722;AHOM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +11723;AHOM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +11724;AHOM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +11725;AHOM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +11726;AHOM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +11727;AHOM VOWEL SIGN AW;Mn;0;NSM;;;;;N;;;;; +11728;AHOM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +11729;AHOM VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1172A;AHOM VOWEL SIGN AM;Mn;0;NSM;;;;;N;;;;; +1172B;AHOM SIGN KILLER;Mn;9;NSM;;;;;N;;;;; +11730;AHOM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11731;AHOM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11732;AHOM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11733;AHOM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11734;AHOM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11735;AHOM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11736;AHOM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11737;AHOM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11738;AHOM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11739;AHOM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1173A;AHOM NUMBER TEN;No;0;L;;;;10;N;;;;; +1173B;AHOM NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1173C;AHOM SIGN SMALL SECTION;Po;0;L;;;;;N;;;;; +1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;; +1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;; +1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;; 118A0;WARANG CITI CAPITAL LETTER NGAA;Lu;0;L;;;;;N;;;;118C0; 118A1;WARANG CITI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;118C1; 118A2;WARANG CITI CAPITAL LETTER WI;Lu;0;L;;;;;N;;;;118C2; @@ -20370,6 +20810,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12396;CUNEIFORM SIGN SAG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 12397;CUNEIFORM SIGN TI2;Lo;0;L;;;;;N;;;;; 12398;CUNEIFORM SIGN UM TIMES ME;Lo;0;L;;;;;N;;;;; +12399;CUNEIFORM SIGN U U;Lo;0;L;;;;;N;;;;; 12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; 12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; 12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; @@ -20486,6 +20927,202 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; 12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; 12474;CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON;Po;0;L;;;;;N;;;;; +12480;CUNEIFORM SIGN AB TIMES NUN TENU;Lo;0;L;;;;;N;;;;; +12481;CUNEIFORM SIGN AB TIMES SHU2;Lo;0;L;;;;;N;;;;; +12482;CUNEIFORM SIGN AD TIMES ESH2;Lo;0;L;;;;;N;;;;; +12483;CUNEIFORM SIGN BAD TIMES DISH TENU;Lo;0;L;;;;;N;;;;; +12484;CUNEIFORM SIGN BAHAR2 TIMES AB2;Lo;0;L;;;;;N;;;;; +12485;CUNEIFORM SIGN BAHAR2 TIMES NI;Lo;0;L;;;;;N;;;;; +12486;CUNEIFORM SIGN BAHAR2 TIMES ZA;Lo;0;L;;;;;N;;;;; +12487;CUNEIFORM SIGN BU OVER BU TIMES NA2;Lo;0;L;;;;;N;;;;; +12488;CUNEIFORM SIGN DA TIMES TAK4;Lo;0;L;;;;;N;;;;; +12489;CUNEIFORM SIGN DAG TIMES KUR;Lo;0;L;;;;;N;;;;; +1248A;CUNEIFORM SIGN DIM TIMES IGI;Lo;0;L;;;;;N;;;;; +1248B;CUNEIFORM SIGN DIM TIMES U U U;Lo;0;L;;;;;N;;;;; +1248C;CUNEIFORM SIGN DIM2 TIMES UD;Lo;0;L;;;;;N;;;;; +1248D;CUNEIFORM SIGN DUG TIMES ANSHE;Lo;0;L;;;;;N;;;;; +1248E;CUNEIFORM SIGN DUG TIMES ASH;Lo;0;L;;;;;N;;;;; +1248F;CUNEIFORM SIGN DUG TIMES ASH AT LEFT;Lo;0;L;;;;;N;;;;; +12490;CUNEIFORM SIGN DUG TIMES DIN;Lo;0;L;;;;;N;;;;; +12491;CUNEIFORM SIGN DUG TIMES DUN;Lo;0;L;;;;;N;;;;; +12492;CUNEIFORM SIGN DUG TIMES ERIN2;Lo;0;L;;;;;N;;;;; +12493;CUNEIFORM SIGN DUG TIMES GA;Lo;0;L;;;;;N;;;;; +12494;CUNEIFORM SIGN DUG TIMES GI;Lo;0;L;;;;;N;;;;; +12495;CUNEIFORM SIGN DUG TIMES GIR2 GUNU;Lo;0;L;;;;;N;;;;; +12496;CUNEIFORM SIGN DUG TIMES GISH;Lo;0;L;;;;;N;;;;; +12497;CUNEIFORM SIGN DUG TIMES HA;Lo;0;L;;;;;N;;;;; +12498;CUNEIFORM SIGN DUG TIMES HI;Lo;0;L;;;;;N;;;;; +12499;CUNEIFORM SIGN DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1249A;CUNEIFORM SIGN DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1249B;CUNEIFORM SIGN DUG TIMES KUR;Lo;0;L;;;;;N;;;;; +1249C;CUNEIFORM SIGN DUG TIMES KUSHU2;Lo;0;L;;;;;N;;;;; +1249D;CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;; +1249E;CUNEIFORM SIGN DUG TIMES LAK-020;Lo;0;L;;;;;N;;;;; +1249F;CUNEIFORM SIGN DUG TIMES LAM;Lo;0;L;;;;;N;;;;; +124A0;CUNEIFORM SIGN DUG TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +124A1;CUNEIFORM SIGN DUG TIMES LUH PLUS GISH;Lo;0;L;;;;;N;;;;; +124A2;CUNEIFORM SIGN DUG TIMES MASH;Lo;0;L;;;;;N;;;;; +124A3;CUNEIFORM SIGN DUG TIMES MES;Lo;0;L;;;;;N;;;;; +124A4;CUNEIFORM SIGN DUG TIMES MI;Lo;0;L;;;;;N;;;;; +124A5;CUNEIFORM SIGN DUG TIMES NI;Lo;0;L;;;;;N;;;;; +124A6;CUNEIFORM SIGN DUG TIMES PI;Lo;0;L;;;;;N;;;;; +124A7;CUNEIFORM SIGN DUG TIMES SHE;Lo;0;L;;;;;N;;;;; +124A8;CUNEIFORM SIGN DUG TIMES SI GUNU;Lo;0;L;;;;;N;;;;; +124A9;CUNEIFORM SIGN E2 TIMES KUR;Lo;0;L;;;;;N;;;;; +124AA;CUNEIFORM SIGN E2 TIMES PAP;Lo;0;L;;;;;N;;;;; +124AB;CUNEIFORM SIGN ERIN2 X;Lo;0;L;;;;;N;;;;; +124AC;CUNEIFORM SIGN ESH2 CROSSING ESH2;Lo;0;L;;;;;N;;;;; +124AD;CUNEIFORM SIGN EZEN SHESHIG TIMES ASH;Lo;0;L;;;;;N;;;;; +124AE;CUNEIFORM SIGN EZEN SHESHIG TIMES HI;Lo;0;L;;;;;N;;;;; +124AF;CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124B0;CUNEIFORM SIGN EZEN SHESHIG TIMES LA;Lo;0;L;;;;;N;;;;; +124B1;CUNEIFORM SIGN EZEN SHESHIG TIMES LAL;Lo;0;L;;;;;N;;;;; +124B2;CUNEIFORM SIGN EZEN SHESHIG TIMES ME;Lo;0;L;;;;;N;;;;; +124B3;CUNEIFORM SIGN EZEN SHESHIG TIMES MES;Lo;0;L;;;;;N;;;;; +124B4;CUNEIFORM SIGN EZEN SHESHIG TIMES SU;Lo;0;L;;;;;N;;;;; +124B5;CUNEIFORM SIGN EZEN TIMES SU;Lo;0;L;;;;;N;;;;; +124B6;CUNEIFORM SIGN GA2 TIMES BAHAR2;Lo;0;L;;;;;N;;;;; +124B7;CUNEIFORM SIGN GA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;; +124B8;CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124B9;CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;; +124BA;CUNEIFORM SIGN GA2 TIMES EREN;Lo;0;L;;;;;N;;;;; +124BB;CUNEIFORM SIGN GA2 TIMES GA;Lo;0;L;;;;;N;;;;; +124BC;CUNEIFORM SIGN GA2 TIMES GAR PLUS DI;Lo;0;L;;;;;N;;;;; +124BD;CUNEIFORM SIGN GA2 TIMES GAR PLUS NE;Lo;0;L;;;;;N;;;;; +124BE;CUNEIFORM SIGN GA2 TIMES HA PLUS A;Lo;0;L;;;;;N;;;;; +124BF;CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;; +124C0;CUNEIFORM SIGN GA2 TIMES LAM;Lo;0;L;;;;;N;;;;; +124C1;CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +124C2;CUNEIFORM SIGN GA2 TIMES LUH;Lo;0;L;;;;;N;;;;; +124C3;CUNEIFORM SIGN GA2 TIMES MUSH;Lo;0;L;;;;;N;;;;; +124C4;CUNEIFORM SIGN GA2 TIMES NE;Lo;0;L;;;;;N;;;;; +124C5;CUNEIFORM SIGN GA2 TIMES NE PLUS E2;Lo;0;L;;;;;N;;;;; +124C6;CUNEIFORM SIGN GA2 TIMES NE PLUS GI;Lo;0;L;;;;;N;;;;; +124C7;CUNEIFORM SIGN GA2 TIMES SHIM;Lo;0;L;;;;;N;;;;; +124C8;CUNEIFORM SIGN GA2 TIMES ZIZ2;Lo;0;L;;;;;N;;;;; +124C9;CUNEIFORM SIGN GABA ROTATED NINETY DEGREES;Lo;0;L;;;;;N;;;;; +124CA;CUNEIFORM SIGN GESHTIN TIMES U;Lo;0;L;;;;;N;;;;; +124CB;CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +124CC;CUNEIFORM SIGN GU2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124CD;CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; +124CE;CUNEIFORM SIGN HA TENU GUNU;Lo;0;L;;;;;N;;;;; +124CF;CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH;Lo;0;L;;;;;N;;;;; +124D0;CUNEIFORM SIGN KA TIMES BU;Lo;0;L;;;;;N;;;;; +124D1;CUNEIFORM SIGN KA TIMES KA;Lo;0;L;;;;;N;;;;; +124D2;CUNEIFORM SIGN KA TIMES U U U;Lo;0;L;;;;;N;;;;; +124D3;CUNEIFORM SIGN KA TIMES UR;Lo;0;L;;;;;N;;;;; +124D4;CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU;Lo;0;L;;;;;N;;;;; +124D5;CUNEIFORM SIGN LAK-003;Lo;0;L;;;;;N;;;;; +124D6;CUNEIFORM SIGN LAK-021;Lo;0;L;;;;;N;;;;; +124D7;CUNEIFORM SIGN LAK-025;Lo;0;L;;;;;N;;;;; +124D8;CUNEIFORM SIGN LAK-030;Lo;0;L;;;;;N;;;;; +124D9;CUNEIFORM SIGN LAK-050;Lo;0;L;;;;;N;;;;; +124DA;CUNEIFORM SIGN LAK-051;Lo;0;L;;;;;N;;;;; +124DB;CUNEIFORM SIGN LAK-062;Lo;0;L;;;;;N;;;;; +124DC;CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU;Lo;0;L;;;;;N;;;;; +124DD;CUNEIFORM SIGN LAK-080;Lo;0;L;;;;;N;;;;; +124DE;CUNEIFORM SIGN LAK-081 OVER LAK-081;Lo;0;L;;;;;N;;;;; +124DF;CUNEIFORM SIGN LAK-092;Lo;0;L;;;;;N;;;;; +124E0;CUNEIFORM SIGN LAK-130;Lo;0;L;;;;;N;;;;; +124E1;CUNEIFORM SIGN LAK-142;Lo;0;L;;;;;N;;;;; +124E2;CUNEIFORM SIGN LAK-210;Lo;0;L;;;;;N;;;;; +124E3;CUNEIFORM SIGN LAK-219;Lo;0;L;;;;;N;;;;; +124E4;CUNEIFORM SIGN LAK-220;Lo;0;L;;;;;N;;;;; +124E5;CUNEIFORM SIGN LAK-225;Lo;0;L;;;;;N;;;;; +124E6;CUNEIFORM SIGN LAK-228;Lo;0;L;;;;;N;;;;; +124E7;CUNEIFORM SIGN LAK-238;Lo;0;L;;;;;N;;;;; +124E8;CUNEIFORM SIGN LAK-265;Lo;0;L;;;;;N;;;;; +124E9;CUNEIFORM SIGN LAK-266;Lo;0;L;;;;;N;;;;; +124EA;CUNEIFORM SIGN LAK-343;Lo;0;L;;;;;N;;;;; +124EB;CUNEIFORM SIGN LAK-347;Lo;0;L;;;;;N;;;;; +124EC;CUNEIFORM SIGN LAK-348;Lo;0;L;;;;;N;;;;; +124ED;CUNEIFORM SIGN LAK-383;Lo;0;L;;;;;N;;;;; +124EE;CUNEIFORM SIGN LAK-384;Lo;0;L;;;;;N;;;;; +124EF;CUNEIFORM SIGN LAK-390;Lo;0;L;;;;;N;;;;; +124F0;CUNEIFORM SIGN LAK-441;Lo;0;L;;;;;N;;;;; +124F1;CUNEIFORM SIGN LAK-449;Lo;0;L;;;;;N;;;;; +124F2;CUNEIFORM SIGN LAK-449 TIMES GU;Lo;0;L;;;;;N;;;;; +124F3;CUNEIFORM SIGN LAK-449 TIMES IGI;Lo;0;L;;;;;N;;;;; +124F4;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +124F5;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +124F6;CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA;Lo;0;L;;;;;N;;;;; +124F7;CUNEIFORM SIGN LAK-450;Lo;0;L;;;;;N;;;;; +124F8;CUNEIFORM SIGN LAK-457;Lo;0;L;;;;;N;;;;; +124F9;CUNEIFORM SIGN LAK-470;Lo;0;L;;;;;N;;;;; +124FA;CUNEIFORM SIGN LAK-483;Lo;0;L;;;;;N;;;;; +124FB;CUNEIFORM SIGN LAK-490;Lo;0;L;;;;;N;;;;; +124FC;CUNEIFORM SIGN LAK-492;Lo;0;L;;;;;N;;;;; +124FD;CUNEIFORM SIGN LAK-493;Lo;0;L;;;;;N;;;;; +124FE;CUNEIFORM SIGN LAK-495;Lo;0;L;;;;;N;;;;; +124FF;CUNEIFORM SIGN LAK-550;Lo;0;L;;;;;N;;;;; +12500;CUNEIFORM SIGN LAK-608;Lo;0;L;;;;;N;;;;; +12501;CUNEIFORM SIGN LAK-617;Lo;0;L;;;;;N;;;;; +12502;CUNEIFORM SIGN LAK-617 TIMES ASH;Lo;0;L;;;;;N;;;;; +12503;CUNEIFORM SIGN LAK-617 TIMES BAD;Lo;0;L;;;;;N;;;;; +12504;CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +12505;CUNEIFORM SIGN LAK-617 TIMES KU3;Lo;0;L;;;;;N;;;;; +12506;CUNEIFORM SIGN LAK-617 TIMES LA;Lo;0;L;;;;;N;;;;; +12507;CUNEIFORM SIGN LAK-617 TIMES TAR;Lo;0;L;;;;;N;;;;; +12508;CUNEIFORM SIGN LAK-617 TIMES TE;Lo;0;L;;;;;N;;;;; +12509;CUNEIFORM SIGN LAK-617 TIMES U2;Lo;0;L;;;;;N;;;;; +1250A;CUNEIFORM SIGN LAK-617 TIMES UD;Lo;0;L;;;;;N;;;;; +1250B;CUNEIFORM SIGN LAK-617 TIMES URUDA;Lo;0;L;;;;;N;;;;; +1250C;CUNEIFORM SIGN LAK-636;Lo;0;L;;;;;N;;;;; +1250D;CUNEIFORM SIGN LAK-648;Lo;0;L;;;;;N;;;;; +1250E;CUNEIFORM SIGN LAK-648 TIMES DUB;Lo;0;L;;;;;N;;;;; +1250F;CUNEIFORM SIGN LAK-648 TIMES GA;Lo;0;L;;;;;N;;;;; +12510;CUNEIFORM SIGN LAK-648 TIMES IGI;Lo;0;L;;;;;N;;;;; +12511;CUNEIFORM SIGN LAK-648 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12512;CUNEIFORM SIGN LAK-648 TIMES NI;Lo;0;L;;;;;N;;;;; +12513;CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +12514;CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI;Lo;0;L;;;;;N;;;;; +12515;CUNEIFORM SIGN LAK-648 TIMES UD;Lo;0;L;;;;;N;;;;; +12516;CUNEIFORM SIGN LAK-648 TIMES URUDA;Lo;0;L;;;;;N;;;;; +12517;CUNEIFORM SIGN LAK-724;Lo;0;L;;;;;N;;;;; +12518;CUNEIFORM SIGN LAK-749;Lo;0;L;;;;;N;;;;; +12519;CUNEIFORM SIGN LU2 GUNU TIMES ASH;Lo;0;L;;;;;N;;;;; +1251A;CUNEIFORM SIGN LU2 TIMES DISH;Lo;0;L;;;;;N;;;;; +1251B;CUNEIFORM SIGN LU2 TIMES HAL;Lo;0;L;;;;;N;;;;; +1251C;CUNEIFORM SIGN LU2 TIMES PAP;Lo;0;L;;;;;N;;;;; +1251D;CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +1251E;CUNEIFORM SIGN LU2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1251F;CUNEIFORM SIGN MI PLUS ZA7;Lo;0;L;;;;;N;;;;; +12520;CUNEIFORM SIGN MUSH OVER MUSH TIMES GA;Lo;0;L;;;;;N;;;;; +12521;CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK;Lo;0;L;;;;;N;;;;; +12522;CUNEIFORM SIGN NINDA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;; +12523;CUNEIFORM SIGN NINDA2 TIMES GISH;Lo;0;L;;;;;N;;;;; +12524;CUNEIFORM SIGN NINDA2 TIMES GUL;Lo;0;L;;;;;N;;;;; +12525;CUNEIFORM SIGN NINDA2 TIMES HI;Lo;0;L;;;;;N;;;;; +12526;CUNEIFORM SIGN NINDA2 TIMES KESH2;Lo;0;L;;;;;N;;;;; +12527;CUNEIFORM SIGN NINDA2 TIMES LAK-050;Lo;0;L;;;;;N;;;;; +12528;CUNEIFORM SIGN NINDA2 TIMES MASH;Lo;0;L;;;;;N;;;;; +12529;CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; +1252A;CUNEIFORM SIGN NINDA2 TIMES U;Lo;0;L;;;;;N;;;;; +1252B;CUNEIFORM SIGN NINDA2 TIMES U PLUS U;Lo;0;L;;;;;N;;;;; +1252C;CUNEIFORM SIGN NINDA2 TIMES URUDA;Lo;0;L;;;;;N;;;;; +1252D;CUNEIFORM SIGN SAG GUNU TIMES HA;Lo;0;L;;;;;N;;;;; +1252E;CUNEIFORM SIGN SAG TIMES EN;Lo;0;L;;;;;N;;;;; +1252F;CUNEIFORM SIGN SAG TIMES SHE AT LEFT;Lo;0;L;;;;;N;;;;; +12530;CUNEIFORM SIGN SAG TIMES TAK4;Lo;0;L;;;;;N;;;;; +12531;CUNEIFORM SIGN SHA6 TENU;Lo;0;L;;;;;N;;;;; +12532;CUNEIFORM SIGN SHE OVER SHE;Lo;0;L;;;;;N;;;;; +12533;CUNEIFORM SIGN SHE PLUS HUB2;Lo;0;L;;;;;N;;;;; +12534;CUNEIFORM SIGN SHE PLUS NAM2;Lo;0;L;;;;;N;;;;; +12535;CUNEIFORM SIGN SHE PLUS SAR;Lo;0;L;;;;;N;;;;; +12536;CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI;Lo;0;L;;;;;N;;;;; +12537;CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN;Lo;0;L;;;;;N;;;;; +12538;CUNEIFORM SIGN SI TIMES TAK4;Lo;0;L;;;;;N;;;;; +12539;CUNEIFORM SIGN TAK4 PLUS SAG;Lo;0;L;;;;;N;;;;; +1253A;CUNEIFORM SIGN TUM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1253B;CUNEIFORM SIGN TUM TIMES THREE DISH;Lo;0;L;;;;;N;;;;; +1253C;CUNEIFORM SIGN UR2 INVERTED;Lo;0;L;;;;;N;;;;; +1253D;CUNEIFORM SIGN UR2 TIMES UD;Lo;0;L;;;;;N;;;;; +1253E;CUNEIFORM SIGN URU TIMES DARA3;Lo;0;L;;;;;N;;;;; +1253F;CUNEIFORM SIGN URU TIMES LAK-668;Lo;0;L;;;;;N;;;;; +12540;CUNEIFORM SIGN URU TIMES LU3;Lo;0;L;;;;;N;;;;; +12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;; +12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;; +12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;; 13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -21557,6 +22194,589 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; 1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; 1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; +14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; +14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; +14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; +14403;ANATOLIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;; +14404;ANATOLIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;; +14405;ANATOLIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;; +14406;ANATOLIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;; +14407;ANATOLIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;; +14408;ANATOLIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;; +14409;ANATOLIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;; +1440A;ANATOLIAN HIEROGLYPH A010A;Lo;0;L;;;;;N;;;;; +1440B;ANATOLIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;; +1440C;ANATOLIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;; +1440D;ANATOLIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;; +1440E;ANATOLIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;; +1440F;ANATOLIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;; +14410;ANATOLIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;; +14411;ANATOLIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;; +14412;ANATOLIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;; +14413;ANATOLIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;; +14414;ANATOLIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;; +14415;ANATOLIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;; +14416;ANATOLIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;; +14417;ANATOLIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;; +14418;ANATOLIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;; +14419;ANATOLIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;; +1441A;ANATOLIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;; +1441B;ANATOLIAN HIEROGLYPH A026A;Lo;0;L;;;;;N;;;;; +1441C;ANATOLIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;; +1441D;ANATOLIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;; +1441E;ANATOLIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;; +1441F;ANATOLIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;; +14420;ANATOLIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;; +14421;ANATOLIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;; +14422;ANATOLIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;; +14423;ANATOLIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;; +14424;ANATOLIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;; +14425;ANATOLIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;; +14426;ANATOLIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;; +14427;ANATOLIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;; +14428;ANATOLIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;; +14429;ANATOLIAN HIEROGLYPH A039A;Lo;0;L;;;;;N;;;;; +1442A;ANATOLIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;; +1442B;ANATOLIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;; +1442C;ANATOLIAN HIEROGLYPH A041A;Lo;0;L;;;;;N;;;;; +1442D;ANATOLIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;; +1442E;ANATOLIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;; +1442F;ANATOLIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;; +14430;ANATOLIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;; +14431;ANATOLIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;; +14432;ANATOLIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;; +14433;ANATOLIAN HIEROGLYPH A046A;Lo;0;L;;;;;N;;;;; +14434;ANATOLIAN HIEROGLYPH A046B;Lo;0;L;;;;;N;;;;; +14435;ANATOLIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;; +14436;ANATOLIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;; +14437;ANATOLIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;; +14438;ANATOLIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;; +14439;ANATOLIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;; +1443A;ANATOLIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;; +1443B;ANATOLIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;; +1443C;ANATOLIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;; +1443D;ANATOLIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;; +1443E;ANATOLIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;; +1443F;ANATOLIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;; +14440;ANATOLIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;; +14441;ANATOLIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;; +14442;ANATOLIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;; +14443;ANATOLIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;; +14444;ANATOLIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;; +14445;ANATOLIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;; +14446;ANATOLIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;; +14447;ANATOLIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;; +14448;ANATOLIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;; +14449;ANATOLIAN HIEROGLYPH A066A;Lo;0;L;;;;;N;;;;; +1444A;ANATOLIAN HIEROGLYPH A066B;Lo;0;L;;;;;N;;;;; +1444B;ANATOLIAN HIEROGLYPH A066C;Lo;0;L;;;;;N;;;;; +1444C;ANATOLIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;; +1444D;ANATOLIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;; +1444E;ANATOLIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;; +1444F;ANATOLIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;; +14450;ANATOLIAN HIEROGLYPH A071;Lo;0;L;;;;;N;;;;; +14451;ANATOLIAN HIEROGLYPH A072;Lo;0;L;;;;;N;;;;; +14452;ANATOLIAN HIEROGLYPH A073;Lo;0;L;;;;;N;;;;; +14453;ANATOLIAN HIEROGLYPH A074;Lo;0;L;;;;;N;;;;; +14454;ANATOLIAN HIEROGLYPH A075;Lo;0;L;;;;;N;;;;; +14455;ANATOLIAN HIEROGLYPH A076;Lo;0;L;;;;;N;;;;; +14456;ANATOLIAN HIEROGLYPH A077;Lo;0;L;;;;;N;;;;; +14457;ANATOLIAN HIEROGLYPH A078;Lo;0;L;;;;;N;;;;; +14458;ANATOLIAN HIEROGLYPH A079;Lo;0;L;;;;;N;;;;; +14459;ANATOLIAN HIEROGLYPH A080;Lo;0;L;;;;;N;;;;; +1445A;ANATOLIAN HIEROGLYPH A081;Lo;0;L;;;;;N;;;;; +1445B;ANATOLIAN HIEROGLYPH A082;Lo;0;L;;;;;N;;;;; +1445C;ANATOLIAN HIEROGLYPH A083;Lo;0;L;;;;;N;;;;; +1445D;ANATOLIAN HIEROGLYPH A084;Lo;0;L;;;;;N;;;;; +1445E;ANATOLIAN HIEROGLYPH A085;Lo;0;L;;;;;N;;;;; +1445F;ANATOLIAN HIEROGLYPH A086;Lo;0;L;;;;;N;;;;; +14460;ANATOLIAN HIEROGLYPH A087;Lo;0;L;;;;;N;;;;; +14461;ANATOLIAN HIEROGLYPH A088;Lo;0;L;;;;;N;;;;; +14462;ANATOLIAN HIEROGLYPH A089;Lo;0;L;;;;;N;;;;; +14463;ANATOLIAN HIEROGLYPH A090;Lo;0;L;;;;;N;;;;; +14464;ANATOLIAN HIEROGLYPH A091;Lo;0;L;;;;;N;;;;; +14465;ANATOLIAN HIEROGLYPH A092;Lo;0;L;;;;;N;;;;; +14466;ANATOLIAN HIEROGLYPH A093;Lo;0;L;;;;;N;;;;; +14467;ANATOLIAN HIEROGLYPH A094;Lo;0;L;;;;;N;;;;; +14468;ANATOLIAN HIEROGLYPH A095;Lo;0;L;;;;;N;;;;; +14469;ANATOLIAN HIEROGLYPH A096;Lo;0;L;;;;;N;;;;; +1446A;ANATOLIAN HIEROGLYPH A097;Lo;0;L;;;;;N;;;;; +1446B;ANATOLIAN HIEROGLYPH A097A;Lo;0;L;;;;;N;;;;; +1446C;ANATOLIAN HIEROGLYPH A098;Lo;0;L;;;;;N;;;;; +1446D;ANATOLIAN HIEROGLYPH A098A;Lo;0;L;;;;;N;;;;; +1446E;ANATOLIAN HIEROGLYPH A099;Lo;0;L;;;;;N;;;;; +1446F;ANATOLIAN HIEROGLYPH A100;Lo;0;L;;;;;N;;;;; +14470;ANATOLIAN HIEROGLYPH A100A;Lo;0;L;;;;;N;;;;; +14471;ANATOLIAN HIEROGLYPH A101;Lo;0;L;;;;;N;;;;; +14472;ANATOLIAN HIEROGLYPH A101A;Lo;0;L;;;;;N;;;;; +14473;ANATOLIAN HIEROGLYPH A102;Lo;0;L;;;;;N;;;;; +14474;ANATOLIAN HIEROGLYPH A102A;Lo;0;L;;;;;N;;;;; +14475;ANATOLIAN HIEROGLYPH A103;Lo;0;L;;;;;N;;;;; +14476;ANATOLIAN HIEROGLYPH A104;Lo;0;L;;;;;N;;;;; +14477;ANATOLIAN HIEROGLYPH A104A;Lo;0;L;;;;;N;;;;; +14478;ANATOLIAN HIEROGLYPH A104B;Lo;0;L;;;;;N;;;;; +14479;ANATOLIAN HIEROGLYPH A104C;Lo;0;L;;;;;N;;;;; +1447A;ANATOLIAN HIEROGLYPH A105;Lo;0;L;;;;;N;;;;; +1447B;ANATOLIAN HIEROGLYPH A105A;Lo;0;L;;;;;N;;;;; +1447C;ANATOLIAN HIEROGLYPH A105B;Lo;0;L;;;;;N;;;;; +1447D;ANATOLIAN HIEROGLYPH A106;Lo;0;L;;;;;N;;;;; +1447E;ANATOLIAN HIEROGLYPH A107;Lo;0;L;;;;;N;;;;; +1447F;ANATOLIAN HIEROGLYPH A107A;Lo;0;L;;;;;N;;;;; +14480;ANATOLIAN HIEROGLYPH A107B;Lo;0;L;;;;;N;;;;; +14481;ANATOLIAN HIEROGLYPH A107C;Lo;0;L;;;;;N;;;;; +14482;ANATOLIAN HIEROGLYPH A108;Lo;0;L;;;;;N;;;;; +14483;ANATOLIAN HIEROGLYPH A109;Lo;0;L;;;;;N;;;;; +14484;ANATOLIAN HIEROGLYPH A110;Lo;0;L;;;;;N;;;;; +14485;ANATOLIAN HIEROGLYPH A110A;Lo;0;L;;;;;N;;;;; +14486;ANATOLIAN HIEROGLYPH A110B;Lo;0;L;;;;;N;;;;; +14487;ANATOLIAN HIEROGLYPH A111;Lo;0;L;;;;;N;;;;; +14488;ANATOLIAN HIEROGLYPH A112;Lo;0;L;;;;;N;;;;; +14489;ANATOLIAN HIEROGLYPH A113;Lo;0;L;;;;;N;;;;; +1448A;ANATOLIAN HIEROGLYPH A114;Lo;0;L;;;;;N;;;;; +1448B;ANATOLIAN HIEROGLYPH A115;Lo;0;L;;;;;N;;;;; +1448C;ANATOLIAN HIEROGLYPH A115A;Lo;0;L;;;;;N;;;;; +1448D;ANATOLIAN HIEROGLYPH A116;Lo;0;L;;;;;N;;;;; +1448E;ANATOLIAN HIEROGLYPH A117;Lo;0;L;;;;;N;;;;; +1448F;ANATOLIAN HIEROGLYPH A118;Lo;0;L;;;;;N;;;;; +14490;ANATOLIAN HIEROGLYPH A119;Lo;0;L;;;;;N;;;;; +14491;ANATOLIAN HIEROGLYPH A120;Lo;0;L;;;;;N;;;;; +14492;ANATOLIAN HIEROGLYPH A121;Lo;0;L;;;;;N;;;;; +14493;ANATOLIAN HIEROGLYPH A122;Lo;0;L;;;;;N;;;;; +14494;ANATOLIAN HIEROGLYPH A123;Lo;0;L;;;;;N;;;;; +14495;ANATOLIAN HIEROGLYPH A124;Lo;0;L;;;;;N;;;;; +14496;ANATOLIAN HIEROGLYPH A125;Lo;0;L;;;;;N;;;;; +14497;ANATOLIAN HIEROGLYPH A125A;Lo;0;L;;;;;N;;;;; +14498;ANATOLIAN HIEROGLYPH A126;Lo;0;L;;;;;N;;;;; +14499;ANATOLIAN HIEROGLYPH A127;Lo;0;L;;;;;N;;;;; +1449A;ANATOLIAN HIEROGLYPH A128;Lo;0;L;;;;;N;;;;; +1449B;ANATOLIAN HIEROGLYPH A129;Lo;0;L;;;;;N;;;;; +1449C;ANATOLIAN HIEROGLYPH A130;Lo;0;L;;;;;N;;;;; +1449D;ANATOLIAN HIEROGLYPH A131;Lo;0;L;;;;;N;;;;; +1449E;ANATOLIAN HIEROGLYPH A132;Lo;0;L;;;;;N;;;;; +1449F;ANATOLIAN HIEROGLYPH A133;Lo;0;L;;;;;N;;;;; +144A0;ANATOLIAN HIEROGLYPH A134;Lo;0;L;;;;;N;;;;; +144A1;ANATOLIAN HIEROGLYPH A135;Lo;0;L;;;;;N;;;;; +144A2;ANATOLIAN HIEROGLYPH A135A;Lo;0;L;;;;;N;;;;; +144A3;ANATOLIAN HIEROGLYPH A136;Lo;0;L;;;;;N;;;;; +144A4;ANATOLIAN HIEROGLYPH A137;Lo;0;L;;;;;N;;;;; +144A5;ANATOLIAN HIEROGLYPH A138;Lo;0;L;;;;;N;;;;; +144A6;ANATOLIAN HIEROGLYPH A139;Lo;0;L;;;;;N;;;;; +144A7;ANATOLIAN HIEROGLYPH A140;Lo;0;L;;;;;N;;;;; +144A8;ANATOLIAN HIEROGLYPH A141;Lo;0;L;;;;;N;;;;; +144A9;ANATOLIAN HIEROGLYPH A142;Lo;0;L;;;;;N;;;;; +144AA;ANATOLIAN HIEROGLYPH A143;Lo;0;L;;;;;N;;;;; +144AB;ANATOLIAN HIEROGLYPH A144;Lo;0;L;;;;;N;;;;; +144AC;ANATOLIAN HIEROGLYPH A145;Lo;0;L;;;;;N;;;;; +144AD;ANATOLIAN HIEROGLYPH A146;Lo;0;L;;;;;N;;;;; +144AE;ANATOLIAN HIEROGLYPH A147;Lo;0;L;;;;;N;;;;; +144AF;ANATOLIAN HIEROGLYPH A148;Lo;0;L;;;;;N;;;;; +144B0;ANATOLIAN HIEROGLYPH A149;Lo;0;L;;;;;N;;;;; +144B1;ANATOLIAN HIEROGLYPH A150;Lo;0;L;;;;;N;;;;; +144B2;ANATOLIAN HIEROGLYPH A151;Lo;0;L;;;;;N;;;;; +144B3;ANATOLIAN HIEROGLYPH A152;Lo;0;L;;;;;N;;;;; +144B4;ANATOLIAN HIEROGLYPH A153;Lo;0;L;;;;;N;;;;; +144B5;ANATOLIAN HIEROGLYPH A154;Lo;0;L;;;;;N;;;;; +144B6;ANATOLIAN HIEROGLYPH A155;Lo;0;L;;;;;N;;;;; +144B7;ANATOLIAN HIEROGLYPH A156;Lo;0;L;;;;;N;;;;; +144B8;ANATOLIAN HIEROGLYPH A157;Lo;0;L;;;;;N;;;;; +144B9;ANATOLIAN HIEROGLYPH A158;Lo;0;L;;;;;N;;;;; +144BA;ANATOLIAN HIEROGLYPH A159;Lo;0;L;;;;;N;;;;; +144BB;ANATOLIAN HIEROGLYPH A160;Lo;0;L;;;;;N;;;;; +144BC;ANATOLIAN HIEROGLYPH A161;Lo;0;L;;;;;N;;;;; +144BD;ANATOLIAN HIEROGLYPH A162;Lo;0;L;;;;;N;;;;; +144BE;ANATOLIAN HIEROGLYPH A163;Lo;0;L;;;;;N;;;;; +144BF;ANATOLIAN HIEROGLYPH A164;Lo;0;L;;;;;N;;;;; +144C0;ANATOLIAN HIEROGLYPH A165;Lo;0;L;;;;;N;;;;; +144C1;ANATOLIAN HIEROGLYPH A166;Lo;0;L;;;;;N;;;;; +144C2;ANATOLIAN HIEROGLYPH A167;Lo;0;L;;;;;N;;;;; +144C3;ANATOLIAN HIEROGLYPH A168;Lo;0;L;;;;;N;;;;; +144C4;ANATOLIAN HIEROGLYPH A169;Lo;0;L;;;;;N;;;;; +144C5;ANATOLIAN HIEROGLYPH A170;Lo;0;L;;;;;N;;;;; +144C6;ANATOLIAN HIEROGLYPH A171;Lo;0;L;;;;;N;;;;; +144C7;ANATOLIAN HIEROGLYPH A172;Lo;0;L;;;;;N;;;;; +144C8;ANATOLIAN HIEROGLYPH A173;Lo;0;L;;;;;N;;;;; +144C9;ANATOLIAN HIEROGLYPH A174;Lo;0;L;;;;;N;;;;; +144CA;ANATOLIAN HIEROGLYPH A175;Lo;0;L;;;;;N;;;;; +144CB;ANATOLIAN HIEROGLYPH A176;Lo;0;L;;;;;N;;;;; +144CC;ANATOLIAN HIEROGLYPH A177;Lo;0;L;;;;;N;;;;; +144CD;ANATOLIAN HIEROGLYPH A178;Lo;0;L;;;;;N;;;;; +144CE;ANATOLIAN HIEROGLYPH A179;Lo;0;L;;;;;N;;;;; +144CF;ANATOLIAN HIEROGLYPH A180;Lo;0;L;;;;;N;;;;; +144D0;ANATOLIAN HIEROGLYPH A181;Lo;0;L;;;;;N;;;;; +144D1;ANATOLIAN HIEROGLYPH A182;Lo;0;L;;;;;N;;;;; +144D2;ANATOLIAN HIEROGLYPH A183;Lo;0;L;;;;;N;;;;; +144D3;ANATOLIAN HIEROGLYPH A184;Lo;0;L;;;;;N;;;;; +144D4;ANATOLIAN HIEROGLYPH A185;Lo;0;L;;;;;N;;;;; +144D5;ANATOLIAN HIEROGLYPH A186;Lo;0;L;;;;;N;;;;; +144D6;ANATOLIAN HIEROGLYPH A187;Lo;0;L;;;;;N;;;;; +144D7;ANATOLIAN HIEROGLYPH A188;Lo;0;L;;;;;N;;;;; +144D8;ANATOLIAN HIEROGLYPH A189;Lo;0;L;;;;;N;;;;; +144D9;ANATOLIAN HIEROGLYPH A190;Lo;0;L;;;;;N;;;;; +144DA;ANATOLIAN HIEROGLYPH A191;Lo;0;L;;;;;N;;;;; +144DB;ANATOLIAN HIEROGLYPH A192;Lo;0;L;;;;;N;;;;; +144DC;ANATOLIAN HIEROGLYPH A193;Lo;0;L;;;;;N;;;;; +144DD;ANATOLIAN HIEROGLYPH A194;Lo;0;L;;;;;N;;;;; +144DE;ANATOLIAN HIEROGLYPH A195;Lo;0;L;;;;;N;;;;; +144DF;ANATOLIAN HIEROGLYPH A196;Lo;0;L;;;;;N;;;;; +144E0;ANATOLIAN HIEROGLYPH A197;Lo;0;L;;;;;N;;;;; +144E1;ANATOLIAN HIEROGLYPH A198;Lo;0;L;;;;;N;;;;; +144E2;ANATOLIAN HIEROGLYPH A199;Lo;0;L;;;;;N;;;;; +144E3;ANATOLIAN HIEROGLYPH A200;Lo;0;L;;;;;N;;;;; +144E4;ANATOLIAN HIEROGLYPH A201;Lo;0;L;;;;;N;;;;; +144E5;ANATOLIAN HIEROGLYPH A202;Lo;0;L;;;;;N;;;;; +144E6;ANATOLIAN HIEROGLYPH A202A;Lo;0;L;;;;;N;;;;; +144E7;ANATOLIAN HIEROGLYPH A202B;Lo;0;L;;;;;N;;;;; +144E8;ANATOLIAN HIEROGLYPH A203;Lo;0;L;;;;;N;;;;; +144E9;ANATOLIAN HIEROGLYPH A204;Lo;0;L;;;;;N;;;;; +144EA;ANATOLIAN HIEROGLYPH A205;Lo;0;L;;;;;N;;;;; +144EB;ANATOLIAN HIEROGLYPH A206;Lo;0;L;;;;;N;;;;; +144EC;ANATOLIAN HIEROGLYPH A207;Lo;0;L;;;;;N;;;;; +144ED;ANATOLIAN HIEROGLYPH A207A;Lo;0;L;;;;;N;;;;; +144EE;ANATOLIAN HIEROGLYPH A208;Lo;0;L;;;;;N;;;;; +144EF;ANATOLIAN HIEROGLYPH A209;Lo;0;L;;;;;N;;;;; +144F0;ANATOLIAN HIEROGLYPH A209A;Lo;0;L;;;;;N;;;;; +144F1;ANATOLIAN HIEROGLYPH A210;Lo;0;L;;;;;N;;;;; +144F2;ANATOLIAN HIEROGLYPH A211;Lo;0;L;;;;;N;;;;; +144F3;ANATOLIAN HIEROGLYPH A212;Lo;0;L;;;;;N;;;;; +144F4;ANATOLIAN HIEROGLYPH A213;Lo;0;L;;;;;N;;;;; +144F5;ANATOLIAN HIEROGLYPH A214;Lo;0;L;;;;;N;;;;; +144F6;ANATOLIAN HIEROGLYPH A215;Lo;0;L;;;;;N;;;;; +144F7;ANATOLIAN HIEROGLYPH A215A;Lo;0;L;;;;;N;;;;; +144F8;ANATOLIAN HIEROGLYPH A216;Lo;0;L;;;;;N;;;;; +144F9;ANATOLIAN HIEROGLYPH A216A;Lo;0;L;;;;;N;;;;; +144FA;ANATOLIAN HIEROGLYPH A217;Lo;0;L;;;;;N;;;;; +144FB;ANATOLIAN HIEROGLYPH A218;Lo;0;L;;;;;N;;;;; +144FC;ANATOLIAN HIEROGLYPH A219;Lo;0;L;;;;;N;;;;; +144FD;ANATOLIAN HIEROGLYPH A220;Lo;0;L;;;;;N;;;;; +144FE;ANATOLIAN HIEROGLYPH A221;Lo;0;L;;;;;N;;;;; +144FF;ANATOLIAN HIEROGLYPH A222;Lo;0;L;;;;;N;;;;; +14500;ANATOLIAN HIEROGLYPH A223;Lo;0;L;;;;;N;;;;; +14501;ANATOLIAN HIEROGLYPH A224;Lo;0;L;;;;;N;;;;; +14502;ANATOLIAN HIEROGLYPH A225;Lo;0;L;;;;;N;;;;; +14503;ANATOLIAN HIEROGLYPH A226;Lo;0;L;;;;;N;;;;; +14504;ANATOLIAN HIEROGLYPH A227;Lo;0;L;;;;;N;;;;; +14505;ANATOLIAN HIEROGLYPH A227A;Lo;0;L;;;;;N;;;;; +14506;ANATOLIAN HIEROGLYPH A228;Lo;0;L;;;;;N;;;;; +14507;ANATOLIAN HIEROGLYPH A229;Lo;0;L;;;;;N;;;;; +14508;ANATOLIAN HIEROGLYPH A230;Lo;0;L;;;;;N;;;;; +14509;ANATOLIAN HIEROGLYPH A231;Lo;0;L;;;;;N;;;;; +1450A;ANATOLIAN HIEROGLYPH A232;Lo;0;L;;;;;N;;;;; +1450B;ANATOLIAN HIEROGLYPH A233;Lo;0;L;;;;;N;;;;; +1450C;ANATOLIAN HIEROGLYPH A234;Lo;0;L;;;;;N;;;;; +1450D;ANATOLIAN HIEROGLYPH A235;Lo;0;L;;;;;N;;;;; +1450E;ANATOLIAN HIEROGLYPH A236;Lo;0;L;;;;;N;;;;; +1450F;ANATOLIAN HIEROGLYPH A237;Lo;0;L;;;;;N;;;;; +14510;ANATOLIAN HIEROGLYPH A238;Lo;0;L;;;;;N;;;;; +14511;ANATOLIAN HIEROGLYPH A239;Lo;0;L;;;;;N;;;;; +14512;ANATOLIAN HIEROGLYPH A240;Lo;0;L;;;;;N;;;;; +14513;ANATOLIAN HIEROGLYPH A241;Lo;0;L;;;;;N;;;;; +14514;ANATOLIAN HIEROGLYPH A242;Lo;0;L;;;;;N;;;;; +14515;ANATOLIAN HIEROGLYPH A243;Lo;0;L;;;;;N;;;;; +14516;ANATOLIAN HIEROGLYPH A244;Lo;0;L;;;;;N;;;;; +14517;ANATOLIAN HIEROGLYPH A245;Lo;0;L;;;;;N;;;;; +14518;ANATOLIAN HIEROGLYPH A246;Lo;0;L;;;;;N;;;;; +14519;ANATOLIAN HIEROGLYPH A247;Lo;0;L;;;;;N;;;;; +1451A;ANATOLIAN HIEROGLYPH A248;Lo;0;L;;;;;N;;;;; +1451B;ANATOLIAN HIEROGLYPH A249;Lo;0;L;;;;;N;;;;; +1451C;ANATOLIAN HIEROGLYPH A250;Lo;0;L;;;;;N;;;;; +1451D;ANATOLIAN HIEROGLYPH A251;Lo;0;L;;;;;N;;;;; +1451E;ANATOLIAN HIEROGLYPH A252;Lo;0;L;;;;;N;;;;; +1451F;ANATOLIAN HIEROGLYPH A253;Lo;0;L;;;;;N;;;;; +14520;ANATOLIAN HIEROGLYPH A254;Lo;0;L;;;;;N;;;;; +14521;ANATOLIAN HIEROGLYPH A255;Lo;0;L;;;;;N;;;;; +14522;ANATOLIAN HIEROGLYPH A256;Lo;0;L;;;;;N;;;;; +14523;ANATOLIAN HIEROGLYPH A257;Lo;0;L;;;;;N;;;;; +14524;ANATOLIAN HIEROGLYPH A258;Lo;0;L;;;;;N;;;;; +14525;ANATOLIAN HIEROGLYPH A259;Lo;0;L;;;;;N;;;;; +14526;ANATOLIAN HIEROGLYPH A260;Lo;0;L;;;;;N;;;;; +14527;ANATOLIAN HIEROGLYPH A261;Lo;0;L;;;;;N;;;;; +14528;ANATOLIAN HIEROGLYPH A262;Lo;0;L;;;;;N;;;;; +14529;ANATOLIAN HIEROGLYPH A263;Lo;0;L;;;;;N;;;;; +1452A;ANATOLIAN HIEROGLYPH A264;Lo;0;L;;;;;N;;;;; +1452B;ANATOLIAN HIEROGLYPH A265;Lo;0;L;;;;;N;;;;; +1452C;ANATOLIAN HIEROGLYPH A266;Lo;0;L;;;;;N;;;;; +1452D;ANATOLIAN HIEROGLYPH A267;Lo;0;L;;;;;N;;;;; +1452E;ANATOLIAN HIEROGLYPH A267A;Lo;0;L;;;;;N;;;;; +1452F;ANATOLIAN HIEROGLYPH A268;Lo;0;L;;;;;N;;;;; +14530;ANATOLIAN HIEROGLYPH A269;Lo;0;L;;;;;N;;;;; +14531;ANATOLIAN HIEROGLYPH A270;Lo;0;L;;;;;N;;;;; +14532;ANATOLIAN HIEROGLYPH A271;Lo;0;L;;;;;N;;;;; +14533;ANATOLIAN HIEROGLYPH A272;Lo;0;L;;;;;N;;;;; +14534;ANATOLIAN HIEROGLYPH A273;Lo;0;L;;;;;N;;;;; +14535;ANATOLIAN HIEROGLYPH A274;Lo;0;L;;;;;N;;;;; +14536;ANATOLIAN HIEROGLYPH A275;Lo;0;L;;;;;N;;;;; +14537;ANATOLIAN HIEROGLYPH A276;Lo;0;L;;;;;N;;;;; +14538;ANATOLIAN HIEROGLYPH A277;Lo;0;L;;;;;N;;;;; +14539;ANATOLIAN HIEROGLYPH A278;Lo;0;L;;;;;N;;;;; +1453A;ANATOLIAN HIEROGLYPH A279;Lo;0;L;;;;;N;;;;; +1453B;ANATOLIAN HIEROGLYPH A280;Lo;0;L;;;;;N;;;;; +1453C;ANATOLIAN HIEROGLYPH A281;Lo;0;L;;;;;N;;;;; +1453D;ANATOLIAN HIEROGLYPH A282;Lo;0;L;;;;;N;;;;; +1453E;ANATOLIAN HIEROGLYPH A283;Lo;0;L;;;;;N;;;;; +1453F;ANATOLIAN HIEROGLYPH A284;Lo;0;L;;;;;N;;;;; +14540;ANATOLIAN HIEROGLYPH A285;Lo;0;L;;;;;N;;;;; +14541;ANATOLIAN HIEROGLYPH A286;Lo;0;L;;;;;N;;;;; +14542;ANATOLIAN HIEROGLYPH A287;Lo;0;L;;;;;N;;;;; +14543;ANATOLIAN HIEROGLYPH A288;Lo;0;L;;;;;N;;;;; +14544;ANATOLIAN HIEROGLYPH A289;Lo;0;L;;;;;N;;;;; +14545;ANATOLIAN HIEROGLYPH A289A;Lo;0;L;;;;;N;;;;; +14546;ANATOLIAN HIEROGLYPH A290;Lo;0;L;;;;;N;;;;; +14547;ANATOLIAN HIEROGLYPH A291;Lo;0;L;;;;;N;;;;; +14548;ANATOLIAN HIEROGLYPH A292;Lo;0;L;;;;;N;;;;; +14549;ANATOLIAN HIEROGLYPH A293;Lo;0;L;;;;;N;;;;; +1454A;ANATOLIAN HIEROGLYPH A294;Lo;0;L;;;;;N;;;;; +1454B;ANATOLIAN HIEROGLYPH A294A;Lo;0;L;;;;;N;;;;; +1454C;ANATOLIAN HIEROGLYPH A295;Lo;0;L;;;;;N;;;;; +1454D;ANATOLIAN HIEROGLYPH A296;Lo;0;L;;;;;N;;;;; +1454E;ANATOLIAN HIEROGLYPH A297;Lo;0;L;;;;;N;;;;; +1454F;ANATOLIAN HIEROGLYPH A298;Lo;0;L;;;;;N;;;;; +14550;ANATOLIAN HIEROGLYPH A299;Lo;0;L;;;;;N;;;;; +14551;ANATOLIAN HIEROGLYPH A299A;Lo;0;L;;;;;N;;;;; +14552;ANATOLIAN HIEROGLYPH A300;Lo;0;L;;;;;N;;;;; +14553;ANATOLIAN HIEROGLYPH A301;Lo;0;L;;;;;N;;;;; +14554;ANATOLIAN HIEROGLYPH A302;Lo;0;L;;;;;N;;;;; +14555;ANATOLIAN HIEROGLYPH A303;Lo;0;L;;;;;N;;;;; +14556;ANATOLIAN HIEROGLYPH A304;Lo;0;L;;;;;N;;;;; +14557;ANATOLIAN HIEROGLYPH A305;Lo;0;L;;;;;N;;;;; +14558;ANATOLIAN HIEROGLYPH A306;Lo;0;L;;;;;N;;;;; +14559;ANATOLIAN HIEROGLYPH A307;Lo;0;L;;;;;N;;;;; +1455A;ANATOLIAN HIEROGLYPH A308;Lo;0;L;;;;;N;;;;; +1455B;ANATOLIAN HIEROGLYPH A309;Lo;0;L;;;;;N;;;;; +1455C;ANATOLIAN HIEROGLYPH A309A;Lo;0;L;;;;;N;;;;; +1455D;ANATOLIAN HIEROGLYPH A310;Lo;0;L;;;;;N;;;;; +1455E;ANATOLIAN HIEROGLYPH A311;Lo;0;L;;;;;N;;;;; +1455F;ANATOLIAN HIEROGLYPH A312;Lo;0;L;;;;;N;;;;; +14560;ANATOLIAN HIEROGLYPH A313;Lo;0;L;;;;;N;;;;; +14561;ANATOLIAN HIEROGLYPH A314;Lo;0;L;;;;;N;;;;; +14562;ANATOLIAN HIEROGLYPH A315;Lo;0;L;;;;;N;;;;; +14563;ANATOLIAN HIEROGLYPH A316;Lo;0;L;;;;;N;;;;; +14564;ANATOLIAN HIEROGLYPH A317;Lo;0;L;;;;;N;;;;; +14565;ANATOLIAN HIEROGLYPH A318;Lo;0;L;;;;;N;;;;; +14566;ANATOLIAN HIEROGLYPH A319;Lo;0;L;;;;;N;;;;; +14567;ANATOLIAN HIEROGLYPH A320;Lo;0;L;;;;;N;;;;; +14568;ANATOLIAN HIEROGLYPH A321;Lo;0;L;;;;;N;;;;; +14569;ANATOLIAN HIEROGLYPH A322;Lo;0;L;;;;;N;;;;; +1456A;ANATOLIAN HIEROGLYPH A323;Lo;0;L;;;;;N;;;;; +1456B;ANATOLIAN HIEROGLYPH A324;Lo;0;L;;;;;N;;;;; +1456C;ANATOLIAN HIEROGLYPH A325;Lo;0;L;;;;;N;;;;; +1456D;ANATOLIAN HIEROGLYPH A326;Lo;0;L;;;;;N;;;;; +1456E;ANATOLIAN HIEROGLYPH A327;Lo;0;L;;;;;N;;;;; +1456F;ANATOLIAN HIEROGLYPH A328;Lo;0;L;;;;;N;;;;; +14570;ANATOLIAN HIEROGLYPH A329;Lo;0;L;;;;;N;;;;; +14571;ANATOLIAN HIEROGLYPH A329A;Lo;0;L;;;;;N;;;;; +14572;ANATOLIAN HIEROGLYPH A330;Lo;0;L;;;;;N;;;;; +14573;ANATOLIAN HIEROGLYPH A331;Lo;0;L;;;;;N;;;;; +14574;ANATOLIAN HIEROGLYPH A332A;Lo;0;L;;;;;N;;;;; +14575;ANATOLIAN HIEROGLYPH A332B;Lo;0;L;;;;;N;;;;; +14576;ANATOLIAN HIEROGLYPH A332C;Lo;0;L;;;;;N;;;;; +14577;ANATOLIAN HIEROGLYPH A333;Lo;0;L;;;;;N;;;;; +14578;ANATOLIAN HIEROGLYPH A334;Lo;0;L;;;;;N;;;;; +14579;ANATOLIAN HIEROGLYPH A335;Lo;0;L;;;;;N;;;;; +1457A;ANATOLIAN HIEROGLYPH A336;Lo;0;L;;;;;N;;;;; +1457B;ANATOLIAN HIEROGLYPH A336A;Lo;0;L;;;;;N;;;;; +1457C;ANATOLIAN HIEROGLYPH A336B;Lo;0;L;;;;;N;;;;; +1457D;ANATOLIAN HIEROGLYPH A336C;Lo;0;L;;;;;N;;;;; +1457E;ANATOLIAN HIEROGLYPH A337;Lo;0;L;;;;;N;;;;; +1457F;ANATOLIAN HIEROGLYPH A338;Lo;0;L;;;;;N;;;;; +14580;ANATOLIAN HIEROGLYPH A339;Lo;0;L;;;;;N;;;;; +14581;ANATOLIAN HIEROGLYPH A340;Lo;0;L;;;;;N;;;;; +14582;ANATOLIAN HIEROGLYPH A341;Lo;0;L;;;;;N;;;;; +14583;ANATOLIAN HIEROGLYPH A342;Lo;0;L;;;;;N;;;;; +14584;ANATOLIAN HIEROGLYPH A343;Lo;0;L;;;;;N;;;;; +14585;ANATOLIAN HIEROGLYPH A344;Lo;0;L;;;;;N;;;;; +14586;ANATOLIAN HIEROGLYPH A345;Lo;0;L;;;;;N;;;;; +14587;ANATOLIAN HIEROGLYPH A346;Lo;0;L;;;;;N;;;;; +14588;ANATOLIAN HIEROGLYPH A347;Lo;0;L;;;;;N;;;;; +14589;ANATOLIAN HIEROGLYPH A348;Lo;0;L;;;;;N;;;;; +1458A;ANATOLIAN HIEROGLYPH A349;Lo;0;L;;;;;N;;;;; +1458B;ANATOLIAN HIEROGLYPH A350;Lo;0;L;;;;;N;;;;; +1458C;ANATOLIAN HIEROGLYPH A351;Lo;0;L;;;;;N;;;;; +1458D;ANATOLIAN HIEROGLYPH A352;Lo;0;L;;;;;N;;;;; +1458E;ANATOLIAN HIEROGLYPH A353;Lo;0;L;;;;;N;;;;; +1458F;ANATOLIAN HIEROGLYPH A354;Lo;0;L;;;;;N;;;;; +14590;ANATOLIAN HIEROGLYPH A355;Lo;0;L;;;;;N;;;;; +14591;ANATOLIAN HIEROGLYPH A356;Lo;0;L;;;;;N;;;;; +14592;ANATOLIAN HIEROGLYPH A357;Lo;0;L;;;;;N;;;;; +14593;ANATOLIAN HIEROGLYPH A358;Lo;0;L;;;;;N;;;;; +14594;ANATOLIAN HIEROGLYPH A359;Lo;0;L;;;;;N;;;;; +14595;ANATOLIAN HIEROGLYPH A359A;Lo;0;L;;;;;N;;;;; +14596;ANATOLIAN HIEROGLYPH A360;Lo;0;L;;;;;N;;;;; +14597;ANATOLIAN HIEROGLYPH A361;Lo;0;L;;;;;N;;;;; +14598;ANATOLIAN HIEROGLYPH A362;Lo;0;L;;;;;N;;;;; +14599;ANATOLIAN HIEROGLYPH A363;Lo;0;L;;;;;N;;;;; +1459A;ANATOLIAN HIEROGLYPH A364;Lo;0;L;;;;;N;;;;; +1459B;ANATOLIAN HIEROGLYPH A364A;Lo;0;L;;;;;N;;;;; +1459C;ANATOLIAN HIEROGLYPH A365;Lo;0;L;;;;;N;;;;; +1459D;ANATOLIAN HIEROGLYPH A366;Lo;0;L;;;;;N;;;;; +1459E;ANATOLIAN HIEROGLYPH A367;Lo;0;L;;;;;N;;;;; +1459F;ANATOLIAN HIEROGLYPH A368;Lo;0;L;;;;;N;;;;; +145A0;ANATOLIAN HIEROGLYPH A368A;Lo;0;L;;;;;N;;;;; +145A1;ANATOLIAN HIEROGLYPH A369;Lo;0;L;;;;;N;;;;; +145A2;ANATOLIAN HIEROGLYPH A370;Lo;0;L;;;;;N;;;;; +145A3;ANATOLIAN HIEROGLYPH A371;Lo;0;L;;;;;N;;;;; +145A4;ANATOLIAN HIEROGLYPH A371A;Lo;0;L;;;;;N;;;;; +145A5;ANATOLIAN HIEROGLYPH A372;Lo;0;L;;;;;N;;;;; +145A6;ANATOLIAN HIEROGLYPH A373;Lo;0;L;;;;;N;;;;; +145A7;ANATOLIAN HIEROGLYPH A374;Lo;0;L;;;;;N;;;;; +145A8;ANATOLIAN HIEROGLYPH A375;Lo;0;L;;;;;N;;;;; +145A9;ANATOLIAN HIEROGLYPH A376;Lo;0;L;;;;;N;;;;; +145AA;ANATOLIAN HIEROGLYPH A377;Lo;0;L;;;;;N;;;;; +145AB;ANATOLIAN HIEROGLYPH A378;Lo;0;L;;;;;N;;;;; +145AC;ANATOLIAN HIEROGLYPH A379;Lo;0;L;;;;;N;;;;; +145AD;ANATOLIAN HIEROGLYPH A380;Lo;0;L;;;;;N;;;;; +145AE;ANATOLIAN HIEROGLYPH A381;Lo;0;L;;;;;N;;;;; +145AF;ANATOLIAN HIEROGLYPH A381A;Lo;0;L;;;;;N;;;;; +145B0;ANATOLIAN HIEROGLYPH A382;Lo;0;L;;;;;N;;;;; +145B1;ANATOLIAN HIEROGLYPH A383 RA OR RI;Lo;0;L;;;;;N;;;;; +145B2;ANATOLIAN HIEROGLYPH A383A;Lo;0;L;;;;;N;;;;; +145B3;ANATOLIAN HIEROGLYPH A384;Lo;0;L;;;;;N;;;;; +145B4;ANATOLIAN HIEROGLYPH A385;Lo;0;L;;;;;N;;;;; +145B5;ANATOLIAN HIEROGLYPH A386;Lo;0;L;;;;;N;;;;; +145B6;ANATOLIAN HIEROGLYPH A386A;Lo;0;L;;;;;N;;;;; +145B7;ANATOLIAN HIEROGLYPH A387;Lo;0;L;;;;;N;;;;; +145B8;ANATOLIAN HIEROGLYPH A388;Lo;0;L;;;;;N;;;;; +145B9;ANATOLIAN HIEROGLYPH A389;Lo;0;L;;;;;N;;;;; +145BA;ANATOLIAN HIEROGLYPH A390;Lo;0;L;;;;;N;;;;; +145BB;ANATOLIAN HIEROGLYPH A391;Lo;0;L;;;;;N;;;;; +145BC;ANATOLIAN HIEROGLYPH A392;Lo;0;L;;;;;N;;;;; +145BD;ANATOLIAN HIEROGLYPH A393 EIGHT;Lo;0;L;;;;;N;;;;; +145BE;ANATOLIAN HIEROGLYPH A394;Lo;0;L;;;;;N;;;;; +145BF;ANATOLIAN HIEROGLYPH A395;Lo;0;L;;;;;N;;;;; +145C0;ANATOLIAN HIEROGLYPH A396;Lo;0;L;;;;;N;;;;; +145C1;ANATOLIAN HIEROGLYPH A397;Lo;0;L;;;;;N;;;;; +145C2;ANATOLIAN HIEROGLYPH A398;Lo;0;L;;;;;N;;;;; +145C3;ANATOLIAN HIEROGLYPH A399;Lo;0;L;;;;;N;;;;; +145C4;ANATOLIAN HIEROGLYPH A400;Lo;0;L;;;;;N;;;;; +145C5;ANATOLIAN HIEROGLYPH A401;Lo;0;L;;;;;N;;;;; +145C6;ANATOLIAN HIEROGLYPH A402;Lo;0;L;;;;;N;;;;; +145C7;ANATOLIAN HIEROGLYPH A403;Lo;0;L;;;;;N;;;;; +145C8;ANATOLIAN HIEROGLYPH A404;Lo;0;L;;;;;N;;;;; +145C9;ANATOLIAN HIEROGLYPH A405;Lo;0;L;;;;;N;;;;; +145CA;ANATOLIAN HIEROGLYPH A406;Lo;0;L;;;;;N;;;;; +145CB;ANATOLIAN HIEROGLYPH A407;Lo;0;L;;;;;N;;;;; +145CC;ANATOLIAN HIEROGLYPH A408;Lo;0;L;;;;;N;;;;; +145CD;ANATOLIAN HIEROGLYPH A409;Lo;0;L;;;;;N;;;;; +145CE;ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK;Lo;0;L;;;;;N;;;;; +145CF;ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK;Lo;0;L;;;;;N;;;;; +145D0;ANATOLIAN HIEROGLYPH A411;Lo;0;L;;;;;N;;;;; +145D1;ANATOLIAN HIEROGLYPH A412;Lo;0;L;;;;;N;;;;; +145D2;ANATOLIAN HIEROGLYPH A413;Lo;0;L;;;;;N;;;;; +145D3;ANATOLIAN HIEROGLYPH A414;Lo;0;L;;;;;N;;;;; +145D4;ANATOLIAN HIEROGLYPH A415;Lo;0;L;;;;;N;;;;; +145D5;ANATOLIAN HIEROGLYPH A416;Lo;0;L;;;;;N;;;;; +145D6;ANATOLIAN HIEROGLYPH A417;Lo;0;L;;;;;N;;;;; +145D7;ANATOLIAN HIEROGLYPH A418;Lo;0;L;;;;;N;;;;; +145D8;ANATOLIAN HIEROGLYPH A419;Lo;0;L;;;;;N;;;;; +145D9;ANATOLIAN HIEROGLYPH A420;Lo;0;L;;;;;N;;;;; +145DA;ANATOLIAN HIEROGLYPH A421;Lo;0;L;;;;;N;;;;; +145DB;ANATOLIAN HIEROGLYPH A422;Lo;0;L;;;;;N;;;;; +145DC;ANATOLIAN HIEROGLYPH A423;Lo;0;L;;;;;N;;;;; +145DD;ANATOLIAN HIEROGLYPH A424;Lo;0;L;;;;;N;;;;; +145DE;ANATOLIAN HIEROGLYPH A425;Lo;0;L;;;;;N;;;;; +145DF;ANATOLIAN HIEROGLYPH A426;Lo;0;L;;;;;N;;;;; +145E0;ANATOLIAN HIEROGLYPH A427;Lo;0;L;;;;;N;;;;; +145E1;ANATOLIAN HIEROGLYPH A428;Lo;0;L;;;;;N;;;;; +145E2;ANATOLIAN HIEROGLYPH A429;Lo;0;L;;;;;N;;;;; +145E3;ANATOLIAN HIEROGLYPH A430;Lo;0;L;;;;;N;;;;; +145E4;ANATOLIAN HIEROGLYPH A431;Lo;0;L;;;;;N;;;;; +145E5;ANATOLIAN HIEROGLYPH A432;Lo;0;L;;;;;N;;;;; +145E6;ANATOLIAN HIEROGLYPH A433;Lo;0;L;;;;;N;;;;; +145E7;ANATOLIAN HIEROGLYPH A434;Lo;0;L;;;;;N;;;;; +145E8;ANATOLIAN HIEROGLYPH A435;Lo;0;L;;;;;N;;;;; +145E9;ANATOLIAN HIEROGLYPH A436;Lo;0;L;;;;;N;;;;; +145EA;ANATOLIAN HIEROGLYPH A437;Lo;0;L;;;;;N;;;;; +145EB;ANATOLIAN HIEROGLYPH A438;Lo;0;L;;;;;N;;;;; +145EC;ANATOLIAN HIEROGLYPH A439;Lo;0;L;;;;;N;;;;; +145ED;ANATOLIAN HIEROGLYPH A440;Lo;0;L;;;;;N;;;;; +145EE;ANATOLIAN HIEROGLYPH A441;Lo;0;L;;;;;N;;;;; +145EF;ANATOLIAN HIEROGLYPH A442;Lo;0;L;;;;;N;;;;; +145F0;ANATOLIAN HIEROGLYPH A443;Lo;0;L;;;;;N;;;;; +145F1;ANATOLIAN HIEROGLYPH A444;Lo;0;L;;;;;N;;;;; +145F2;ANATOLIAN HIEROGLYPH A445;Lo;0;L;;;;;N;;;;; +145F3;ANATOLIAN HIEROGLYPH A446;Lo;0;L;;;;;N;;;;; +145F4;ANATOLIAN HIEROGLYPH A447;Lo;0;L;;;;;N;;;;; +145F5;ANATOLIAN HIEROGLYPH A448;Lo;0;L;;;;;N;;;;; +145F6;ANATOLIAN HIEROGLYPH A449;Lo;0;L;;;;;N;;;;; +145F7;ANATOLIAN HIEROGLYPH A450;Lo;0;L;;;;;N;;;;; +145F8;ANATOLIAN HIEROGLYPH A450A;Lo;0;L;;;;;N;;;;; +145F9;ANATOLIAN HIEROGLYPH A451;Lo;0;L;;;;;N;;;;; +145FA;ANATOLIAN HIEROGLYPH A452;Lo;0;L;;;;;N;;;;; +145FB;ANATOLIAN HIEROGLYPH A453;Lo;0;L;;;;;N;;;;; +145FC;ANATOLIAN HIEROGLYPH A454;Lo;0;L;;;;;N;;;;; +145FD;ANATOLIAN HIEROGLYPH A455;Lo;0;L;;;;;N;;;;; +145FE;ANATOLIAN HIEROGLYPH A456;Lo;0;L;;;;;N;;;;; +145FF;ANATOLIAN HIEROGLYPH A457;Lo;0;L;;;;;N;;;;; +14600;ANATOLIAN HIEROGLYPH A457A;Lo;0;L;;;;;N;;;;; +14601;ANATOLIAN HIEROGLYPH A458;Lo;0;L;;;;;N;;;;; +14602;ANATOLIAN HIEROGLYPH A459;Lo;0;L;;;;;N;;;;; +14603;ANATOLIAN HIEROGLYPH A460;Lo;0;L;;;;;N;;;;; +14604;ANATOLIAN HIEROGLYPH A461;Lo;0;L;;;;;N;;;;; +14605;ANATOLIAN HIEROGLYPH A462;Lo;0;L;;;;;N;;;;; +14606;ANATOLIAN HIEROGLYPH A463;Lo;0;L;;;;;N;;;;; +14607;ANATOLIAN HIEROGLYPH A464;Lo;0;L;;;;;N;;;;; +14608;ANATOLIAN HIEROGLYPH A465;Lo;0;L;;;;;N;;;;; +14609;ANATOLIAN HIEROGLYPH A466;Lo;0;L;;;;;N;;;;; +1460A;ANATOLIAN HIEROGLYPH A467;Lo;0;L;;;;;N;;;;; +1460B;ANATOLIAN HIEROGLYPH A468;Lo;0;L;;;;;N;;;;; +1460C;ANATOLIAN HIEROGLYPH A469;Lo;0;L;;;;;N;;;;; +1460D;ANATOLIAN HIEROGLYPH A470;Lo;0;L;;;;;N;;;;; +1460E;ANATOLIAN HIEROGLYPH A471;Lo;0;L;;;;;N;;;;; +1460F;ANATOLIAN HIEROGLYPH A472;Lo;0;L;;;;;N;;;;; +14610;ANATOLIAN HIEROGLYPH A473;Lo;0;L;;;;;N;;;;; +14611;ANATOLIAN HIEROGLYPH A474;Lo;0;L;;;;;N;;;;; +14612;ANATOLIAN HIEROGLYPH A475;Lo;0;L;;;;;N;;;;; +14613;ANATOLIAN HIEROGLYPH A476;Lo;0;L;;;;;N;;;;; +14614;ANATOLIAN HIEROGLYPH A477;Lo;0;L;;;;;N;;;;; +14615;ANATOLIAN HIEROGLYPH A478;Lo;0;L;;;;;N;;;;; +14616;ANATOLIAN HIEROGLYPH A479;Lo;0;L;;;;;N;;;;; +14617;ANATOLIAN HIEROGLYPH A480;Lo;0;L;;;;;N;;;;; +14618;ANATOLIAN HIEROGLYPH A481;Lo;0;L;;;;;N;;;;; +14619;ANATOLIAN HIEROGLYPH A482;Lo;0;L;;;;;N;;;;; +1461A;ANATOLIAN HIEROGLYPH A483;Lo;0;L;;;;;N;;;;; +1461B;ANATOLIAN HIEROGLYPH A484;Lo;0;L;;;;;N;;;;; +1461C;ANATOLIAN HIEROGLYPH A485;Lo;0;L;;;;;N;;;;; +1461D;ANATOLIAN HIEROGLYPH A486;Lo;0;L;;;;;N;;;;; +1461E;ANATOLIAN HIEROGLYPH A487;Lo;0;L;;;;;N;;;;; +1461F;ANATOLIAN HIEROGLYPH A488;Lo;0;L;;;;;N;;;;; +14620;ANATOLIAN HIEROGLYPH A489;Lo;0;L;;;;;N;;;;; +14621;ANATOLIAN HIEROGLYPH A490;Lo;0;L;;;;;N;;;;; +14622;ANATOLIAN HIEROGLYPH A491;Lo;0;L;;;;;N;;;;; +14623;ANATOLIAN HIEROGLYPH A492;Lo;0;L;;;;;N;;;;; +14624;ANATOLIAN HIEROGLYPH A493;Lo;0;L;;;;;N;;;;; +14625;ANATOLIAN HIEROGLYPH A494;Lo;0;L;;;;;N;;;;; +14626;ANATOLIAN HIEROGLYPH A495;Lo;0;L;;;;;N;;;;; +14627;ANATOLIAN HIEROGLYPH A496;Lo;0;L;;;;;N;;;;; +14628;ANATOLIAN HIEROGLYPH A497;Lo;0;L;;;;;N;;;;; +14629;ANATOLIAN HIEROGLYPH A501;Lo;0;L;;;;;N;;;;; +1462A;ANATOLIAN HIEROGLYPH A502;Lo;0;L;;;;;N;;;;; +1462B;ANATOLIAN HIEROGLYPH A503;Lo;0;L;;;;;N;;;;; +1462C;ANATOLIAN HIEROGLYPH A504;Lo;0;L;;;;;N;;;;; +1462D;ANATOLIAN HIEROGLYPH A505;Lo;0;L;;;;;N;;;;; +1462E;ANATOLIAN HIEROGLYPH A506;Lo;0;L;;;;;N;;;;; +1462F;ANATOLIAN HIEROGLYPH A507;Lo;0;L;;;;;N;;;;; +14630;ANATOLIAN HIEROGLYPH A508;Lo;0;L;;;;;N;;;;; +14631;ANATOLIAN HIEROGLYPH A509;Lo;0;L;;;;;N;;;;; +14632;ANATOLIAN HIEROGLYPH A510;Lo;0;L;;;;;N;;;;; +14633;ANATOLIAN HIEROGLYPH A511;Lo;0;L;;;;;N;;;;; +14634;ANATOLIAN HIEROGLYPH A512;Lo;0;L;;;;;N;;;;; +14635;ANATOLIAN HIEROGLYPH A513;Lo;0;L;;;;;N;;;;; +14636;ANATOLIAN HIEROGLYPH A514;Lo;0;L;;;;;N;;;;; +14637;ANATOLIAN HIEROGLYPH A515;Lo;0;L;;;;;N;;;;; +14638;ANATOLIAN HIEROGLYPH A516;Lo;0;L;;;;;N;;;;; +14639;ANATOLIAN HIEROGLYPH A517;Lo;0;L;;;;;N;;;;; +1463A;ANATOLIAN HIEROGLYPH A518;Lo;0;L;;;;;N;;;;; +1463B;ANATOLIAN HIEROGLYPH A519;Lo;0;L;;;;;N;;;;; +1463C;ANATOLIAN HIEROGLYPH A520;Lo;0;L;;;;;N;;;;; +1463D;ANATOLIAN HIEROGLYPH A521;Lo;0;L;;;;;N;;;;; +1463E;ANATOLIAN HIEROGLYPH A522;Lo;0;L;;;;;N;;;;; +1463F;ANATOLIAN HIEROGLYPH A523;Lo;0;L;;;;;N;;;;; +14640;ANATOLIAN HIEROGLYPH A524;Lo;0;L;;;;;N;;;;; +14641;ANATOLIAN HIEROGLYPH A525;Lo;0;L;;;;;N;;;;; +14642;ANATOLIAN HIEROGLYPH A526;Lo;0;L;;;;;N;;;;; +14643;ANATOLIAN HIEROGLYPH A527;Lo;0;L;;;;;N;;;;; +14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;; +14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;; +14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;; 16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;; 16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;; 16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;; @@ -23080,6 +24300,17 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; 1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; 1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D1DE;MUSICAL SYMBOL KIEVAN C CLEF;So;0;L;;;;;N;;;;; +1D1DF;MUSICAL SYMBOL KIEVAN END OF PIECE;So;0;L;;;;;N;;;;; +1D1E0;MUSICAL SYMBOL KIEVAN FINAL NOTE;So;0;L;;;;;N;;;;; +1D1E1;MUSICAL SYMBOL KIEVAN RECITATIVE MARK;So;0;L;;;;;N;;;;; +1D1E2;MUSICAL SYMBOL KIEVAN WHOLE NOTE;So;0;L;;;;;N;;;;; +1D1E3;MUSICAL SYMBOL KIEVAN HALF NOTE;So;0;L;;;;;N;;;;; +1D1E4;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN;So;0;L;;;;;N;;;;; +1D1E5;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP;So;0;L;;;;;N;;;;; +1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;; +1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;; +1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;; 1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; @@ -24251,6 +25482,678 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D800;SIGNWRITING HAND-FIST INDEX;So;0;L;;;;;N;;;;; +1D801;SIGNWRITING HAND-CIRCLE INDEX;So;0;L;;;;;N;;;;; +1D802;SIGNWRITING HAND-CUP INDEX;So;0;L;;;;;N;;;;; +1D803;SIGNWRITING HAND-OVAL INDEX;So;0;L;;;;;N;;;;; +1D804;SIGNWRITING HAND-HINGE INDEX;So;0;L;;;;;N;;;;; +1D805;SIGNWRITING HAND-ANGLE INDEX;So;0;L;;;;;N;;;;; +1D806;SIGNWRITING HAND-FIST INDEX BENT;So;0;L;;;;;N;;;;; +1D807;SIGNWRITING HAND-CIRCLE INDEX BENT;So;0;L;;;;;N;;;;; +1D808;SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT;So;0;L;;;;;N;;;;; +1D809;SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D80A;SIGNWRITING HAND-FIST INDEX CUPPED;So;0;L;;;;;N;;;;; +1D80B;SIGNWRITING HAND-FIST INDEX HINGED;So;0;L;;;;;N;;;;; +1D80C;SIGNWRITING HAND-FIST INDEX HINGED LOW;So;0;L;;;;;N;;;;; +1D80D;SIGNWRITING HAND-CIRCLE INDEX HINGE;So;0;L;;;;;N;;;;; +1D80E;SIGNWRITING HAND-FIST INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D80F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D810;SIGNWRITING HAND-FIST INDEX MIDDLE BENT;So;0;L;;;;;N;;;;; +1D811;SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D812;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D813;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D814;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP;So;0;L;;;;;N;;;;; +1D815;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED;So;0;L;;;;;N;;;;; +1D816;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT;So;0;L;;;;;N;;;;; +1D817;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT;So;0;L;;;;;N;;;;; +1D818;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED;So;0;L;;;;;N;;;;; +1D819;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED;So;0;L;;;;;N;;;;; +1D81A;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;; +1D81B;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;; +1D81C;SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX;So;0;L;;;;;N;;;;; +1D81D;SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE;So;0;L;;;;;N;;;;; +1D81E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D81F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D820;SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT;So;0;L;;;;;N;;;;; +1D821;SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT;So;0;L;;;;;N;;;;; +1D822;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT;So;0;L;;;;;N;;;;; +1D823;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE;So;0;L;;;;;N;;;;; +1D824;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D825;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED;So;0;L;;;;;N;;;;; +1D826;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;; +1D827;SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;; +1D828;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED;So;0;L;;;;;N;;;;; +1D829;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED;So;0;L;;;;;N;;;;; +1D82A;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED;So;0;L;;;;;N;;;;; +1D82B;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED;So;0;L;;;;;N;;;;; +1D82C;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT;So;0;L;;;;;N;;;;; +1D82D;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE;So;0;L;;;;;N;;;;; +1D82E;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;; +1D82F;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D830;SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP;So;0;L;;;;;N;;;;; +1D831;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP;So;0;L;;;;;N;;;;; +1D832;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D833;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE;So;0;L;;;;;N;;;;; +1D834;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD;So;0;L;;;;;N;;;;; +1D835;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD;So;0;L;;;;;N;;;;; +1D836;SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP;So;0;L;;;;;N;;;;; +1D837;SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP;So;0;L;;;;;N;;;;; +1D838;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP;So;0;L;;;;;N;;;;; +1D839;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED;So;0;L;;;;;N;;;;; +1D83A;SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP;So;0;L;;;;;N;;;;; +1D83B;SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP;So;0;L;;;;;N;;;;; +1D83C;SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP;So;0;L;;;;;N;;;;; +1D83D;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED;So;0;L;;;;;N;;;;; +1D83E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT;So;0;L;;;;;N;;;;; +1D83F;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED;So;0;L;;;;;N;;;;; +1D840;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP;So;0;L;;;;;N;;;;; +1D841;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED;So;0;L;;;;;N;;;;; +1D842;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP;So;0;L;;;;;N;;;;; +1D843;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D844;SIGNWRITING HAND-FLAT FOUR FINGERS;So;0;L;;;;;N;;;;; +1D845;SIGNWRITING HAND-FLAT FOUR FINGERS BENT;So;0;L;;;;;N;;;;; +1D846;SIGNWRITING HAND-FLAT FOUR FINGERS HINGED;So;0;L;;;;;N;;;;; +1D847;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D848;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT;So;0;L;;;;;N;;;;; +1D849;SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D84A;SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT;So;0;L;;;;;N;;;;; +1D84B;SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D84C;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D84D;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D84E;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;; +1D84F;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;; +1D850;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;; +1D851;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;; +1D852;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;; +1D853;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D854;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;; +1D855;SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;; +1D856;SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D857;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED;So;0;L;;;;;N;;;;; +1D858;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D859;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB;So;0;L;;;;;N;;;;; +1D85A;SIGNWRITING HAND-FLAT;So;0;L;;;;;N;;;;; +1D85B;SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS;So;0;L;;;;;N;;;;; +1D85C;SIGNWRITING HAND-FLAT HEEL;So;0;L;;;;;N;;;;; +1D85D;SIGNWRITING HAND-FLAT THUMB SIDE;So;0;L;;;;;N;;;;; +1D85E;SIGNWRITING HAND-FLAT HEEL THUMB SIDE;So;0;L;;;;;N;;;;; +1D85F;SIGNWRITING HAND-FLAT THUMB BENT;So;0;L;;;;;N;;;;; +1D860;SIGNWRITING HAND-FLAT THUMB FORWARD;So;0;L;;;;;N;;;;; +1D861;SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D862;SIGNWRITING HAND-FLAT SPLIT CENTRE;So;0;L;;;;;N;;;;; +1D863;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE;So;0;L;;;;;N;;;;; +1D864;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D865;SIGNWRITING HAND-FLAT SPLIT LITTLE;So;0;L;;;;;N;;;;; +1D866;SIGNWRITING HAND-CLAW;So;0;L;;;;;N;;;;; +1D867;SIGNWRITING HAND-CLAW THUMB SIDE;So;0;L;;;;;N;;;;; +1D868;SIGNWRITING HAND-CLAW NO THUMB;So;0;L;;;;;N;;;;; +1D869;SIGNWRITING HAND-CLAW THUMB FORWARD;So;0;L;;;;;N;;;;; +1D86A;SIGNWRITING HAND-HOOK CURLICUE;So;0;L;;;;;N;;;;; +1D86B;SIGNWRITING HAND-HOOK;So;0;L;;;;;N;;;;; +1D86C;SIGNWRITING HAND-CUP OPEN;So;0;L;;;;;N;;;;; +1D86D;SIGNWRITING HAND-CUP;So;0;L;;;;;N;;;;; +1D86E;SIGNWRITING HAND-CUP OPEN THUMB SIDE;So;0;L;;;;;N;;;;; +1D86F;SIGNWRITING HAND-CUP THUMB SIDE;So;0;L;;;;;N;;;;; +1D870;SIGNWRITING HAND-CUP OPEN NO THUMB;So;0;L;;;;;N;;;;; +1D871;SIGNWRITING HAND-CUP NO THUMB;So;0;L;;;;;N;;;;; +1D872;SIGNWRITING HAND-CUP OPEN THUMB FORWARD;So;0;L;;;;;N;;;;; +1D873;SIGNWRITING HAND-CUP THUMB FORWARD;So;0;L;;;;;N;;;;; +1D874;SIGNWRITING HAND-CURLICUE OPEN;So;0;L;;;;;N;;;;; +1D875;SIGNWRITING HAND-CURLICUE;So;0;L;;;;;N;;;;; +1D876;SIGNWRITING HAND-CIRCLE;So;0;L;;;;;N;;;;; +1D877;SIGNWRITING HAND-OVAL;So;0;L;;;;;N;;;;; +1D878;SIGNWRITING HAND-OVAL THUMB SIDE;So;0;L;;;;;N;;;;; +1D879;SIGNWRITING HAND-OVAL NO THUMB;So;0;L;;;;;N;;;;; +1D87A;SIGNWRITING HAND-OVAL THUMB FORWARD;So;0;L;;;;;N;;;;; +1D87B;SIGNWRITING HAND-HINGE OPEN;So;0;L;;;;;N;;;;; +1D87C;SIGNWRITING HAND-HINGE OPEN THUMB FORWARD;So;0;L;;;;;N;;;;; +1D87D;SIGNWRITING HAND-HINGE;So;0;L;;;;;N;;;;; +1D87E;SIGNWRITING HAND-HINGE SMALL;So;0;L;;;;;N;;;;; +1D87F;SIGNWRITING HAND-HINGE OPEN THUMB SIDE;So;0;L;;;;;N;;;;; +1D880;SIGNWRITING HAND-HINGE THUMB SIDE;So;0;L;;;;;N;;;;; +1D881;SIGNWRITING HAND-HINGE OPEN NO THUMB;So;0;L;;;;;N;;;;; +1D882;SIGNWRITING HAND-HINGE NO THUMB;So;0;L;;;;;N;;;;; +1D883;SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX;So;0;L;;;;;N;;;;; +1D884;SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;; +1D885;SIGNWRITING HAND-ANGLE;So;0;L;;;;;N;;;;; +1D886;SIGNWRITING HAND-FIST INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D887;SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D888;SIGNWRITING HAND-HINGE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D889;SIGNWRITING HAND-ANGLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D88A;SIGNWRITING HAND-HINGE LITTLE;So;0;L;;;;;N;;;;; +1D88B;SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT;So;0;L;;;;;N;;;;; +1D88C;SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;; +1D88D;SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;; +1D88E;SIGNWRITING HAND-FIST LITTLE DOWN;So;0;L;;;;;N;;;;; +1D88F;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT;So;0;L;;;;;N;;;;; +1D890;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED;So;0;L;;;;;N;;;;; +1D891;SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED;So;0;L;;;;;N;;;;; +1D892;SIGNWRITING HAND-FIST LITTLE UP;So;0;L;;;;;N;;;;; +1D893;SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP;So;0;L;;;;;N;;;;; +1D894;SIGNWRITING HAND-CIRCLE LITTLE UP;So;0;L;;;;;N;;;;; +1D895;SIGNWRITING HAND-OVAL LITTLE UP;So;0;L;;;;;N;;;;; +1D896;SIGNWRITING HAND-ANGLE LITTLE UP;So;0;L;;;;;N;;;;; +1D897;SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D898;SIGNWRITING HAND-FIST LITTLE BENT;So;0;L;;;;;N;;;;; +1D899;SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB;So;0;L;;;;;N;;;;; +1D89A;SIGNWRITING HAND-FIST LITTLE THUMB;So;0;L;;;;;N;;;;; +1D89B;SIGNWRITING HAND-HINGE LITTLE THUMB;So;0;L;;;;;N;;;;; +1D89C;SIGNWRITING HAND-FIST LITTLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D89D;SIGNWRITING HAND-HINGE LITTLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D89E;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT;So;0;L;;;;;N;;;;; +1D89F;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB;So;0;L;;;;;N;;;;; +1D8A0;SIGNWRITING HAND-FIST LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A1;SIGNWRITING HAND-CIRCLE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A2;SIGNWRITING HAND-HINGE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A3;SIGNWRITING HAND-ANGLE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A4;SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A5;SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A6;SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A7;SIGNWRITING HAND-HINGE RING;So;0;L;;;;;N;;;;; +1D8A8;SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A9;SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;; +1D8AA;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;; +1D8AB;SIGNWRITING HAND-FIST RING DOWN;So;0;L;;;;;N;;;;; +1D8AC;SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE;So;0;L;;;;;N;;;;; +1D8AD;SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS;So;0;L;;;;;N;;;;; +1D8AE;SIGNWRITING HAND-FIST RING UP;So;0;L;;;;;N;;;;; +1D8AF;SIGNWRITING HAND-FIST RING RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D8B0;SIGNWRITING HAND-FIST RING LITTLE;So;0;L;;;;;N;;;;; +1D8B1;SIGNWRITING HAND-CIRCLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8B2;SIGNWRITING HAND-OVAL RING LITTLE;So;0;L;;;;;N;;;;; +1D8B3;SIGNWRITING HAND-ANGLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8B4;SIGNWRITING HAND-FIST RING MIDDLE;So;0;L;;;;;N;;;;; +1D8B5;SIGNWRITING HAND-FIST RING MIDDLE CONJOINED;So;0;L;;;;;N;;;;; +1D8B6;SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D8B7;SIGNWRITING HAND-FIST RING INDEX;So;0;L;;;;;N;;;;; +1D8B8;SIGNWRITING HAND-FIST RING THUMB;So;0;L;;;;;N;;;;; +1D8B9;SIGNWRITING HAND-HOOK RING THUMB;So;0;L;;;;;N;;;;; +1D8BA;SIGNWRITING HAND-FIST INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8BB;SIGNWRITING HAND-CIRCLE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8BC;SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON;So;0;L;;;;;N;;;;; +1D8BD;SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8BE;SIGNWRITING HAND-HOOK INDEX RING LITTLE IN;So;0;L;;;;;N;;;;; +1D8BF;SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER;So;0;L;;;;;N;;;;; +1D8C0;SIGNWRITING HAND-CUP INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C1;SIGNWRITING HAND-HINGE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C2;SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8C3;SIGNWRITING HAND-ANGLE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C4;SIGNWRITING HAND-FIST MIDDLE DOWN;So;0;L;;;;;N;;;;; +1D8C5;SIGNWRITING HAND-HINGE MIDDLE;So;0;L;;;;;N;;;;; +1D8C6;SIGNWRITING HAND-FIST MIDDLE UP;So;0;L;;;;;N;;;;; +1D8C7;SIGNWRITING HAND-CIRCLE MIDDLE UP;So;0;L;;;;;N;;;;; +1D8C8;SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D8C9;SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;; +1D8CA;SIGNWRITING HAND-HOOK MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D8CB;SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE;So;0;L;;;;;N;;;;; +1D8CC;SIGNWRITING HAND-FIST MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8CD;SIGNWRITING HAND-FIST MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8CE;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8CF;SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON;So;0;L;;;;;N;;;;; +1D8D0;SIGNWRITING HAND-CUP MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D1;SIGNWRITING HAND-HINGE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D2;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8D3;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN;So;0;L;;;;;N;;;;; +1D8D4;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D5;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT;So;0;L;;;;;N;;;;; +1D8D6;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;; +1D8D7;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE;So;0;L;;;;;N;;;;; +1D8D8;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT;So;0;L;;;;;N;;;;; +1D8D9;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN;So;0;L;;;;;N;;;;; +1D8DA;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;; +1D8DB;SIGNWRITING HAND-HINGE INDEX HINGED;So;0;L;;;;;N;;;;; +1D8DC;SIGNWRITING HAND-FIST INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D8DD;SIGNWRITING HAND-HINGE INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D8DE;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL;So;0;L;;;;;N;;;;; +1D8DF;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED;So;0;L;;;;;N;;;;; +1D8E0;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT;So;0;L;;;;;N;;;;; +1D8E1;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT;So;0;L;;;;;N;;;;; +1D8E2;SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT;So;0;L;;;;;N;;;;; +1D8E3;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE;So;0;L;;;;;N;;;;; +1D8E4;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT;So;0;L;;;;;N;;;;; +1D8E5;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT;So;0;L;;;;;N;;;;; +1D8E6;SIGNWRITING HAND-FIST INDEX THUMB HOOK;So;0;L;;;;;N;;;;; +1D8E7;SIGNWRITING HAND-FIST INDEX THUMB CURLICUE;So;0;L;;;;;N;;;;; +1D8E8;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;; +1D8E9;SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;; +1D8EA;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER;So;0;L;;;;;N;;;;; +1D8EB;SIGNWRITING HAND-FIST INDEX THUMB CIRCLE;So;0;L;;;;;N;;;;; +1D8EC;SIGNWRITING HAND-CUP INDEX THUMB;So;0;L;;;;;N;;;;; +1D8ED;SIGNWRITING HAND-CUP INDEX THUMB OPEN;So;0;L;;;;;N;;;;; +1D8EE;SIGNWRITING HAND-HINGE INDEX THUMB OPEN;So;0;L;;;;;N;;;;; +1D8EF;SIGNWRITING HAND-HINGE INDEX THUMB LARGE;So;0;L;;;;;N;;;;; +1D8F0;SIGNWRITING HAND-HINGE INDEX THUMB;So;0;L;;;;;N;;;;; +1D8F1;SIGNWRITING HAND-HINGE INDEX THUMB SMALL;So;0;L;;;;;N;;;;; +1D8F2;SIGNWRITING HAND-ANGLE INDEX THUMB OUT;So;0;L;;;;;N;;;;; +1D8F3;SIGNWRITING HAND-ANGLE INDEX THUMB IN;So;0;L;;;;;N;;;;; +1D8F4;SIGNWRITING HAND-ANGLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D8F5;SIGNWRITING HAND-FIST THUMB;So;0;L;;;;;N;;;;; +1D8F6;SIGNWRITING HAND-FIST THUMB HEEL;So;0;L;;;;;N;;;;; +1D8F7;SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL;So;0;L;;;;;N;;;;; +1D8F8;SIGNWRITING HAND-FIST THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;; +1D8F9;SIGNWRITING HAND-FIST THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D8FA;SIGNWRITING HAND-FIST THUMB FORWARD;So;0;L;;;;;N;;;;; +1D8FB;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D8FC;SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;; +1D8FD;SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE;So;0;L;;;;;N;;;;; +1D8FE;SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS;So;0;L;;;;;N;;;;; +1D8FF;SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS;So;0;L;;;;;N;;;;; +1D900;SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS;So;0;L;;;;;N;;;;; +1D901;SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS;So;0;L;;;;;N;;;;; +1D902;SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D903;SIGNWRITING HAND-FIST;So;0;L;;;;;N;;;;; +1D904;SIGNWRITING HAND-FIST HEEL;So;0;L;;;;;N;;;;; +1D905;SIGNWRITING TOUCH SINGLE;So;0;L;;;;;N;;;;; +1D906;SIGNWRITING TOUCH MULTIPLE;So;0;L;;;;;N;;;;; +1D907;SIGNWRITING TOUCH BETWEEN;So;0;L;;;;;N;;;;; +1D908;SIGNWRITING GRASP SINGLE;So;0;L;;;;;N;;;;; +1D909;SIGNWRITING GRASP MULTIPLE;So;0;L;;;;;N;;;;; +1D90A;SIGNWRITING GRASP BETWEEN;So;0;L;;;;;N;;;;; +1D90B;SIGNWRITING STRIKE SINGLE;So;0;L;;;;;N;;;;; +1D90C;SIGNWRITING STRIKE MULTIPLE;So;0;L;;;;;N;;;;; +1D90D;SIGNWRITING STRIKE BETWEEN;So;0;L;;;;;N;;;;; +1D90E;SIGNWRITING BRUSH SINGLE;So;0;L;;;;;N;;;;; +1D90F;SIGNWRITING BRUSH MULTIPLE;So;0;L;;;;;N;;;;; +1D910;SIGNWRITING BRUSH BETWEEN;So;0;L;;;;;N;;;;; +1D911;SIGNWRITING RUB SINGLE;So;0;L;;;;;N;;;;; +1D912;SIGNWRITING RUB MULTIPLE;So;0;L;;;;;N;;;;; +1D913;SIGNWRITING RUB BETWEEN;So;0;L;;;;;N;;;;; +1D914;SIGNWRITING SURFACE SYMBOLS;So;0;L;;;;;N;;;;; +1D915;SIGNWRITING SURFACE BETWEEN;So;0;L;;;;;N;;;;; +1D916;SIGNWRITING SQUEEZE LARGE SINGLE;So;0;L;;;;;N;;;;; +1D917;SIGNWRITING SQUEEZE SMALL SINGLE;So;0;L;;;;;N;;;;; +1D918;SIGNWRITING SQUEEZE LARGE MULTIPLE;So;0;L;;;;;N;;;;; +1D919;SIGNWRITING SQUEEZE SMALL MULTIPLE;So;0;L;;;;;N;;;;; +1D91A;SIGNWRITING SQUEEZE SEQUENTIAL;So;0;L;;;;;N;;;;; +1D91B;SIGNWRITING FLICK LARGE SINGLE;So;0;L;;;;;N;;;;; +1D91C;SIGNWRITING FLICK SMALL SINGLE;So;0;L;;;;;N;;;;; +1D91D;SIGNWRITING FLICK LARGE MULTIPLE;So;0;L;;;;;N;;;;; +1D91E;SIGNWRITING FLICK SMALL MULTIPLE;So;0;L;;;;;N;;;;; +1D91F;SIGNWRITING FLICK SEQUENTIAL;So;0;L;;;;;N;;;;; +1D920;SIGNWRITING SQUEEZE FLICK ALTERNATING;So;0;L;;;;;N;;;;; +1D921;SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE;So;0;L;;;;;N;;;;; +1D922;SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL;So;0;L;;;;;N;;;;; +1D923;SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL;So;0;L;;;;;N;;;;; +1D924;SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL;So;0;L;;;;;N;;;;; +1D925;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE;So;0;L;;;;;N;;;;; +1D926;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL;So;0;L;;;;;N;;;;; +1D927;SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS;So;0;L;;;;;N;;;;; +1D928;SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT;So;0;L;;;;;N;;;;; +1D929;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT;So;0;L;;;;;N;;;;; +1D92A;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;; +1D92B;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;; +1D92C;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;; +1D92D;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;; +1D92E;SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D92F;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;; +1D930;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D931;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;; +1D932;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D933;SIGNWRITING MOVEMENT-WALLPLANE CROSS;So;0;L;;;;;N;;;;; +1D934;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;; +1D935;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D936;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING;So;0;L;;;;;N;;;;; +1D937;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D938;SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL;So;0;L;;;;;N;;;;; +1D939;SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM;So;0;L;;;;;N;;;;; +1D93A;SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE;So;0;L;;;;;N;;;;; +1D93B;SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL;So;0;L;;;;;N;;;;; +1D93C;SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;; +1D93D;SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE;So;0;L;;;;;N;;;;; +1D93E;SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION;So;0;L;;;;;N;;;;; +1D93F;SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL;So;0;L;;;;;N;;;;; +1D940;SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM;So;0;L;;;;;N;;;;; +1D941;SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE;So;0;L;;;;;N;;;;; +1D942;SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL;So;0;L;;;;;N;;;;; +1D943;SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM;So;0;L;;;;;N;;;;; +1D944;SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE;So;0;L;;;;;N;;;;; +1D945;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;; +1D946;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;; +1D947;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;; +1D948;SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL;So;0;L;;;;;N;;;;; +1D949;SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;; +1D94A;SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE;So;0;L;;;;;N;;;;; +1D94B;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D94C;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D94D;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D94E;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D94F;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D950;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D951;SIGNWRITING TRAVEL-WALLPLANE SHAKING;So;0;L;;;;;N;;;;; +1D952;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE;So;0;L;;;;;N;;;;; +1D953;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE;So;0;L;;;;;N;;;;; +1D954;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE;So;0;L;;;;;N;;;;; +1D955;SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL;So;0;L;;;;;N;;;;; +1D956;SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM;So;0;L;;;;;N;;;;; +1D957;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE;So;0;L;;;;;N;;;;; +1D958;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST;So;0;L;;;;;N;;;;; +1D959;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL;So;0;L;;;;;N;;;;; +1D95A;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM;So;0;L;;;;;N;;;;; +1D95B;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE;So;0;L;;;;;N;;;;; +1D95C;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST;So;0;L;;;;;N;;;;; +1D95D;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL;So;0;L;;;;;N;;;;; +1D95E;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM;So;0;L;;;;;N;;;;; +1D95F;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE;So;0;L;;;;;N;;;;; +1D960;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST;So;0;L;;;;;N;;;;; +1D961;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL;So;0;L;;;;;N;;;;; +1D962;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM;So;0;L;;;;;N;;;;; +1D963;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE;So;0;L;;;;;N;;;;; +1D964;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST;So;0;L;;;;;N;;;;; +1D965;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;; +1D966;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;; +1D967;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;; +1D968;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;; +1D969;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D96A;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;; +1D96B;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D96C;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;; +1D96D;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D96E;SIGNWRITING MOVEMENT-FLOORPLANE CROSS;So;0;L;;;;;N;;;;; +1D96F;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;; +1D970;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D971;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT;So;0;L;;;;;N;;;;; +1D972;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D973;SIGNWRITING MOVEMENT-FLOORPLANE BEND;So;0;L;;;;;N;;;;; +1D974;SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL;So;0;L;;;;;N;;;;; +1D975;SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;; +1D976;SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE;So;0;L;;;;;N;;;;; +1D977;SIGNWRITING MOVEMENT-FLOORPLANE CHECK;So;0;L;;;;;N;;;;; +1D978;SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL;So;0;L;;;;;N;;;;; +1D979;SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM;So;0;L;;;;;N;;;;; +1D97A;SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE;So;0;L;;;;;N;;;;; +1D97B;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;; +1D97C;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;; +1D97D;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;; +1D97E;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL;So;0;L;;;;;N;;;;; +1D97F;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;; +1D980;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE;So;0;L;;;;;N;;;;; +1D981;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D982;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D983;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D984;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D985;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D986;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D987;SIGNWRITING TRAVEL-FLOORPLANE SHAKING;So;0;L;;;;;N;;;;; +1D988;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL;So;0;L;;;;;N;;;;; +1D989;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM;So;0;L;;;;;N;;;;; +1D98A;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE;So;0;L;;;;;N;;;;; +1D98B;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST;So;0;L;;;;;N;;;;; +1D98C;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL;So;0;L;;;;;N;;;;; +1D98D;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM;So;0;L;;;;;N;;;;; +1D98E;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE;So;0;L;;;;;N;;;;; +1D98F;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST;So;0;L;;;;;N;;;;; +1D990;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL;So;0;L;;;;;N;;;;; +1D991;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM;So;0;L;;;;;N;;;;; +1D992;SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL;So;0;L;;;;;N;;;;; +1D993;SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM;So;0;L;;;;;N;;;;; +1D994;SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE;So;0;L;;;;;N;;;;; +1D995;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL;So;0;L;;;;;N;;;;; +1D996;SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM;So;0;L;;;;;N;;;;; +1D997;SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE;So;0;L;;;;;N;;;;; +1D998;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D999;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL;So;0;L;;;;;N;;;;; +1D99A;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM;So;0;L;;;;;N;;;;; +1D99B;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE;So;0;L;;;;;N;;;;; +1D99C;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL;So;0;L;;;;;N;;;;; +1D99D;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM;So;0;L;;;;;N;;;;; +1D99E;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE;So;0;L;;;;;N;;;;; +1D99F;SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT;So;0;L;;;;;N;;;;; +1D9A0;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL;So;0;L;;;;;N;;;;; +1D9A1;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM;So;0;L;;;;;N;;;;; +1D9A2;SIGNWRITING ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D9A3;SIGNWRITING ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D9A4;SIGNWRITING ROTATION-WALLPLANE ALTERNATE;So;0;L;;;;;N;;;;; +1D9A5;SIGNWRITING MOVEMENT-WALLPLANE SHAKING;So;0;L;;;;;N;;;;; +1D9A6;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A7;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A8;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A9;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AA;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AB;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AC;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AD;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9AE;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST;So;0;L;;;;;N;;;;; +1D9AF;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B0;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B1;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B2;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B3;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B4;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL;So;0;L;;;;;N;;;;; +1D9B5;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM;So;0;L;;;;;N;;;;; +1D9B6;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE;So;0;L;;;;;N;;;;; +1D9B7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;; +1D9B8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;; +1D9B9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9BA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9BB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE;So;0;L;;;;;N;;;;; +1D9BC;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE;So;0;L;;;;;N;;;;; +1D9BD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9BE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9BF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9C0;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9C1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;; +1D9C2;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;; +1D9C3;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C4;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C5;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;; +1D9C7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;; +1D9C8;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9C9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9CA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE;So;0;L;;;;;N;;;;; +1D9CB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE;So;0;L;;;;;N;;;;; +1D9CC;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9CD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9CE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9CF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9D0;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;; +1D9D1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;; +1D9D2;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D3;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D4;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D5;SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL;So;0;L;;;;;N;;;;; +1D9D6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM;So;0;L;;;;;N;;;;; +1D9D7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE;So;0;L;;;;;N;;;;; +1D9D8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST;So;0;L;;;;;N;;;;; +1D9D9;SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED;So;0;L;;;;;N;;;;; +1D9DA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL;So;0;L;;;;;N;;;;; +1D9DB;SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL;So;0;L;;;;;N;;;;; +1D9DC;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE;So;0;L;;;;;N;;;;; +1D9DD;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL;So;0;L;;;;;N;;;;; +1D9DE;SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE;So;0;L;;;;;N;;;;; +1D9DF;SIGNWRITING ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D9E0;SIGNWRITING ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D9E1;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D9E2;SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL;So;0;L;;;;;N;;;;; +1D9E3;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9E4;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE;So;0;L;;;;;N;;;;; +1D9E5;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9E6;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE;So;0;L;;;;;N;;;;; +1D9E7;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9E8;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE;So;0;L;;;;;N;;;;; +1D9E9;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9EA;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9EB;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE;So;0;L;;;;;N;;;;; +1D9EC;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9ED;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE;So;0;L;;;;;N;;;;; +1D9EE;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE;So;0;L;;;;;N;;;;; +1D9EF;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE;So;0;L;;;;;N;;;;; +1D9F0;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE;So;0;L;;;;;N;;;;; +1D9F1;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE;So;0;L;;;;;N;;;;; +1D9F2;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE;So;0;L;;;;;N;;;;; +1D9F3;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE;So;0;L;;;;;N;;;;; +1D9F4;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE;So;0;L;;;;;N;;;;; +1D9F5;SIGNWRITING DYNAMIC ARROWHEAD SMALL;So;0;L;;;;;N;;;;; +1D9F6;SIGNWRITING DYNAMIC ARROWHEAD LARGE;So;0;L;;;;;N;;;;; +1D9F7;SIGNWRITING DYNAMIC FAST;So;0;L;;;;;N;;;;; +1D9F8;SIGNWRITING DYNAMIC SLOW;So;0;L;;;;;N;;;;; +1D9F9;SIGNWRITING DYNAMIC TENSE;So;0;L;;;;;N;;;;; +1D9FA;SIGNWRITING DYNAMIC RELAXED;So;0;L;;;;;N;;;;; +1D9FB;SIGNWRITING DYNAMIC SIMULTANEOUS;So;0;L;;;;;N;;;;; +1D9FC;SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING;So;0;L;;;;;N;;;;; +1D9FD;SIGNWRITING DYNAMIC EVERY OTHER TIME;So;0;L;;;;;N;;;;; +1D9FE;SIGNWRITING DYNAMIC GRADUAL;So;0;L;;;;;N;;;;; +1D9FF;SIGNWRITING HEAD;So;0;L;;;;;N;;;;; +1DA00;SIGNWRITING HEAD RIM;Mn;0;NSM;;;;;N;;;;; +1DA01;SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA02;SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT;Mn;0;NSM;;;;;N;;;;; +1DA03;SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA04;SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE;Mn;0;NSM;;;;;N;;;;; +1DA05;SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE;Mn;0;NSM;;;;;N;;;;; +1DA06;SIGNWRITING HEAD MOVEMENT CIRCLE;Mn;0;NSM;;;;;N;;;;; +1DA07;SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING;Mn;0;NSM;;;;;N;;;;; +1DA08;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN;Mn;0;NSM;;;;;N;;;;; +1DA09;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING;Mn;0;NSM;;;;;N;;;;; +1DA0A;SIGNWRITING EYEBROWS STRAIGHT UP;Mn;0;NSM;;;;;N;;;;; +1DA0B;SIGNWRITING EYEBROWS STRAIGHT NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA0C;SIGNWRITING EYEBROWS STRAIGHT DOWN;Mn;0;NSM;;;;;N;;;;; +1DA0D;SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN;Mn;0;NSM;;;;;N;;;;; +1DA0E;SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA0F;SIGNWRITING DREAMY EYEBROWS UP NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA10;SIGNWRITING DREAMY EYEBROWS NEUTRAL UP;Mn;0;NSM;;;;;N;;;;; +1DA11;SIGNWRITING FOREHEAD NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA12;SIGNWRITING FOREHEAD CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA13;SIGNWRITING FOREHEAD WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA14;SIGNWRITING EYES OPEN;Mn;0;NSM;;;;;N;;;;; +1DA15;SIGNWRITING EYES SQUEEZED;Mn;0;NSM;;;;;N;;;;; +1DA16;SIGNWRITING EYES CLOSED;Mn;0;NSM;;;;;N;;;;; +1DA17;SIGNWRITING EYE BLINK SINGLE;Mn;0;NSM;;;;;N;;;;; +1DA18;SIGNWRITING EYE BLINK MULTIPLE;Mn;0;NSM;;;;;N;;;;; +1DA19;SIGNWRITING EYES HALF OPEN;Mn;0;NSM;;;;;N;;;;; +1DA1A;SIGNWRITING EYES WIDE OPEN;Mn;0;NSM;;;;;N;;;;; +1DA1B;SIGNWRITING EYES HALF CLOSED;Mn;0;NSM;;;;;N;;;;; +1DA1C;SIGNWRITING EYES WIDENING MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA1D;SIGNWRITING EYE WINK;Mn;0;NSM;;;;;N;;;;; +1DA1E;SIGNWRITING EYELASHES UP;Mn;0;NSM;;;;;N;;;;; +1DA1F;SIGNWRITING EYELASHES DOWN;Mn;0;NSM;;;;;N;;;;; +1DA20;SIGNWRITING EYELASHES FLUTTERING;Mn;0;NSM;;;;;N;;;;; +1DA21;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA22;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA23;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;; +1DA24;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA25;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA26;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;; +1DA27;SIGNWRITING EYEGAZE-WALLPLANE CURVED;Mn;0;NSM;;;;;N;;;;; +1DA28;SIGNWRITING EYEGAZE-FLOORPLANE CURVED;Mn;0;NSM;;;;;N;;;;; +1DA29;SIGNWRITING EYEGAZE-WALLPLANE CIRCLING;Mn;0;NSM;;;;;N;;;;; +1DA2A;SIGNWRITING CHEEKS PUFFED;Mn;0;NSM;;;;;N;;;;; +1DA2B;SIGNWRITING CHEEKS NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA2C;SIGNWRITING CHEEKS SUCKED;Mn;0;NSM;;;;;N;;;;; +1DA2D;SIGNWRITING TENSE CHEEKS HIGH;Mn;0;NSM;;;;;N;;;;; +1DA2E;SIGNWRITING TENSE CHEEKS MIDDLE;Mn;0;NSM;;;;;N;;;;; +1DA2F;SIGNWRITING TENSE CHEEKS LOW;Mn;0;NSM;;;;;N;;;;; +1DA30;SIGNWRITING EARS;Mn;0;NSM;;;;;N;;;;; +1DA31;SIGNWRITING NOSE NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA32;SIGNWRITING NOSE CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA33;SIGNWRITING NOSE WRINKLES;Mn;0;NSM;;;;;N;;;;; +1DA34;SIGNWRITING NOSE WIGGLES;Mn;0;NSM;;;;;N;;;;; +1DA35;SIGNWRITING AIR BLOWING OUT;Mn;0;NSM;;;;;N;;;;; +1DA36;SIGNWRITING AIR SUCKING IN;Mn;0;NSM;;;;;N;;;;; +1DA37;SIGNWRITING AIR BLOW SMALL ROTATIONS;So;0;L;;;;;N;;;;; +1DA38;SIGNWRITING AIR SUCK SMALL ROTATIONS;So;0;L;;;;;N;;;;; +1DA39;SIGNWRITING BREATH INHALE;So;0;L;;;;;N;;;;; +1DA3A;SIGNWRITING BREATH EXHALE;So;0;L;;;;;N;;;;; +1DA3B;SIGNWRITING MOUTH CLOSED NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA3C;SIGNWRITING MOUTH CLOSED FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA3D;SIGNWRITING MOUTH CLOSED CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA3E;SIGNWRITING MOUTH SMILE;Mn;0;NSM;;;;;N;;;;; +1DA3F;SIGNWRITING MOUTH SMILE WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA40;SIGNWRITING MOUTH SMILE OPEN;Mn;0;NSM;;;;;N;;;;; +1DA41;SIGNWRITING MOUTH FROWN;Mn;0;NSM;;;;;N;;;;; +1DA42;SIGNWRITING MOUTH FROWN WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA43;SIGNWRITING MOUTH FROWN OPEN;Mn;0;NSM;;;;;N;;;;; +1DA44;SIGNWRITING MOUTH OPEN CIRCLE;Mn;0;NSM;;;;;N;;;;; +1DA45;SIGNWRITING MOUTH OPEN FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA46;SIGNWRITING MOUTH OPEN WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA47;SIGNWRITING MOUTH OPEN OVAL;Mn;0;NSM;;;;;N;;;;; +1DA48;SIGNWRITING MOUTH OPEN OVAL WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA49;SIGNWRITING MOUTH OPEN OVAL YAWN;Mn;0;NSM;;;;;N;;;;; +1DA4A;SIGNWRITING MOUTH OPEN RECTANGLE;Mn;0;NSM;;;;;N;;;;; +1DA4B;SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA4C;SIGNWRITING MOUTH OPEN RECTANGLE YAWN;Mn;0;NSM;;;;;N;;;;; +1DA4D;SIGNWRITING MOUTH KISS;Mn;0;NSM;;;;;N;;;;; +1DA4E;SIGNWRITING MOUTH KISS FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA4F;SIGNWRITING MOUTH KISS WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA50;SIGNWRITING MOUTH TENSE;Mn;0;NSM;;;;;N;;;;; +1DA51;SIGNWRITING MOUTH TENSE FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA52;SIGNWRITING MOUTH TENSE SUCKED;Mn;0;NSM;;;;;N;;;;; +1DA53;SIGNWRITING LIPS PRESSED TOGETHER;Mn;0;NSM;;;;;N;;;;; +1DA54;SIGNWRITING LIP LOWER OVER UPPER;Mn;0;NSM;;;;;N;;;;; +1DA55;SIGNWRITING LIP UPPER OVER LOWER;Mn;0;NSM;;;;;N;;;;; +1DA56;SIGNWRITING MOUTH CORNERS;Mn;0;NSM;;;;;N;;;;; +1DA57;SIGNWRITING MOUTH WRINKLES SINGLE;Mn;0;NSM;;;;;N;;;;; +1DA58;SIGNWRITING MOUTH WRINKLES DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA59;SIGNWRITING TONGUE STICKING OUT FAR;Mn;0;NSM;;;;;N;;;;; +1DA5A;SIGNWRITING TONGUE LICKING LIPS;Mn;0;NSM;;;;;N;;;;; +1DA5B;SIGNWRITING TONGUE TIP BETWEEN LIPS;Mn;0;NSM;;;;;N;;;;; +1DA5C;SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;; +1DA5D;SIGNWRITING TONGUE INSIDE MOUTH RELAXED;Mn;0;NSM;;;;;N;;;;; +1DA5E;SIGNWRITING TONGUE MOVES AGAINST CHEEK;Mn;0;NSM;;;;;N;;;;; +1DA5F;SIGNWRITING TONGUE CENTRE STICKING OUT;Mn;0;NSM;;;;;N;;;;; +1DA60;SIGNWRITING TONGUE CENTRE INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;; +1DA61;SIGNWRITING TEETH;Mn;0;NSM;;;;;N;;;;; +1DA62;SIGNWRITING TEETH MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA63;SIGNWRITING TEETH ON TONGUE;Mn;0;NSM;;;;;N;;;;; +1DA64;SIGNWRITING TEETH ON TONGUE MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA65;SIGNWRITING TEETH ON LIPS;Mn;0;NSM;;;;;N;;;;; +1DA66;SIGNWRITING TEETH ON LIPS MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA67;SIGNWRITING TEETH BITE LIPS;Mn;0;NSM;;;;;N;;;;; +1DA68;SIGNWRITING MOVEMENT-WALLPLANE JAW;Mn;0;NSM;;;;;N;;;;; +1DA69;SIGNWRITING MOVEMENT-FLOORPLANE JAW;Mn;0;NSM;;;;;N;;;;; +1DA6A;SIGNWRITING NECK;Mn;0;NSM;;;;;N;;;;; +1DA6B;SIGNWRITING HAIR;Mn;0;NSM;;;;;N;;;;; +1DA6C;SIGNWRITING EXCITEMENT;Mn;0;NSM;;;;;N;;;;; +1DA6D;SIGNWRITING SHOULDER HIP SPINE;So;0;L;;;;;N;;;;; +1DA6E;SIGNWRITING SHOULDER HIP POSITIONS;So;0;L;;;;;N;;;;; +1DA6F;SIGNWRITING WALLPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;; +1DA70;SIGNWRITING FLOORPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;; +1DA71;SIGNWRITING SHOULDER TILTING FROM WAIST;So;0;L;;;;;N;;;;; +1DA72;SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH;So;0;L;;;;;N;;;;; +1DA73;SIGNWRITING TORSO-WALLPLANE CURVED BEND;So;0;L;;;;;N;;;;; +1DA74;SIGNWRITING TORSO-FLOORPLANE TWISTING;So;0;L;;;;;N;;;;; +1DA75;SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS;Mn;0;NSM;;;;;N;;;;; +1DA76;SIGNWRITING LIMB COMBINATION;So;0;L;;;;;N;;;;; +1DA77;SIGNWRITING LIMB LENGTH-1;So;0;L;;;;;N;;;;; +1DA78;SIGNWRITING LIMB LENGTH-2;So;0;L;;;;;N;;;;; +1DA79;SIGNWRITING LIMB LENGTH-3;So;0;L;;;;;N;;;;; +1DA7A;SIGNWRITING LIMB LENGTH-4;So;0;L;;;;;N;;;;; +1DA7B;SIGNWRITING LIMB LENGTH-5;So;0;L;;;;;N;;;;; +1DA7C;SIGNWRITING LIMB LENGTH-6;So;0;L;;;;;N;;;;; +1DA7D;SIGNWRITING LIMB LENGTH-7;So;0;L;;;;;N;;;;; +1DA7E;SIGNWRITING FINGER;So;0;L;;;;;N;;;;; +1DA7F;SIGNWRITING LOCATION-WALLPLANE SPACE;So;0;L;;;;;N;;;;; +1DA80;SIGNWRITING LOCATION-FLOORPLANE SPACE;So;0;L;;;;;N;;;;; +1DA81;SIGNWRITING LOCATION HEIGHT;So;0;L;;;;;N;;;;; +1DA82;SIGNWRITING LOCATION WIDTH;So;0;L;;;;;N;;;;; +1DA83;SIGNWRITING LOCATION DEPTH;So;0;L;;;;;N;;;;; +1DA84;SIGNWRITING LOCATION HEAD NECK;Mn;0;NSM;;;;;N;;;;; +1DA85;SIGNWRITING LOCATION TORSO;So;0;L;;;;;N;;;;; +1DA86;SIGNWRITING LOCATION LIMBS DIGITS;So;0;L;;;;;N;;;;; +1DA87;SIGNWRITING COMMA;Po;0;L;;;;;N;;;;; +1DA88;SIGNWRITING FULL STOP;Po;0;L;;;;;N;;;;; +1DA89;SIGNWRITING SEMICOLON;Po;0;L;;;;;N;;;;; +1DA8A;SIGNWRITING COLON;Po;0;L;;;;;N;;;;; +1DA8B;SIGNWRITING PARENTHESIS;Po;0;L;;;;;N;;;;; +1DA9B;SIGNWRITING FILL MODIFIER-2;Mn;0;NSM;;;;;N;;;;; +1DA9C;SIGNWRITING FILL MODIFIER-3;Mn;0;NSM;;;;;N;;;;; +1DA9D;SIGNWRITING FILL MODIFIER-4;Mn;0;NSM;;;;;N;;;;; +1DA9E;SIGNWRITING FILL MODIFIER-5;Mn;0;NSM;;;;;N;;;;; +1DA9F;SIGNWRITING FILL MODIFIER-6;Mn;0;NSM;;;;;N;;;;; +1DAA1;SIGNWRITING ROTATION MODIFIER-2;Mn;0;NSM;;;;;N;;;;; +1DAA2;SIGNWRITING ROTATION MODIFIER-3;Mn;0;NSM;;;;;N;;;;; +1DAA3;SIGNWRITING ROTATION MODIFIER-4;Mn;0;NSM;;;;;N;;;;; +1DAA4;SIGNWRITING ROTATION MODIFIER-5;Mn;0;NSM;;;;;N;;;;; +1DAA5;SIGNWRITING ROTATION MODIFIER-6;Mn;0;NSM;;;;;N;;;;; +1DAA6;SIGNWRITING ROTATION MODIFIER-7;Mn;0;NSM;;;;;N;;;;; +1DAA7;SIGNWRITING ROTATION MODIFIER-8;Mn;0;NSM;;;;;N;;;;; +1DAA8;SIGNWRITING ROTATION MODIFIER-9;Mn;0;NSM;;;;;N;;;;; +1DAA9;SIGNWRITING ROTATION MODIFIER-10;Mn;0;NSM;;;;;N;;;;; +1DAAA;SIGNWRITING ROTATION MODIFIER-11;Mn;0;NSM;;;;;N;;;;; +1DAAB;SIGNWRITING ROTATION MODIFIER-12;Mn;0;NSM;;;;;N;;;;; +1DAAC;SIGNWRITING ROTATION MODIFIER-13;Mn;0;NSM;;;;;N;;;;; +1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; +1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; +1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; @@ -25108,6 +27011,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F32A;CLOUD WITH TORNADO;So;0;ON;;;;;N;;;;; 1F32B;FOG;So;0;ON;;;;;N;;;;; 1F32C;WIND BLOWING FACE;So;0;ON;;;;;N;;;;; +1F32D;HOT DOG;So;0;ON;;;;;N;;;;; +1F32E;TACO;So;0;ON;;;;;N;;;;; +1F32F;BURRITO;So;0;ON;;;;;N;;;;; 1F330;CHESTNUT;So;0;ON;;;;;N;;;;; 1F331;SEEDLING;So;0;ON;;;;;N;;;;; 1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;; @@ -25186,6 +27092,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;; 1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;; 1F37D;FORK AND KNIFE WITH PLATE;So;0;ON;;;;;N;;;;; +1F37E;BOTTLE WITH POPPING CORK;So;0;ON;;;;;N;;;;; +1F37F;POPCORN;So;0;ON;;;;;N;;;;; 1F380;RIBBON;So;0;ON;;;;;N;;;;; 1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;; 1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;; @@ -25265,6 +27173,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F3CC;GOLFER;So;0;ON;;;;;N;;;;; 1F3CD;RACING MOTORCYCLE;So;0;ON;;;;;N;;;;; 1F3CE;RACING CAR;So;0;ON;;;;;N;;;;; +1F3CF;CRICKET BAT AND BALL;So;0;ON;;;;;N;;;;; +1F3D0;VOLLEYBALL;So;0;ON;;;;;N;;;;; +1F3D1;FIELD HOCKEY STICK AND BALL;So;0;ON;;;;;N;;;;; +1F3D2;ICE HOCKEY STICK AND PUCK;So;0;ON;;;;;N;;;;; +1F3D3;TABLE TENNIS PADDLE AND BALL;So;0;ON;;;;;N;;;;; 1F3D4;SNOW CAPPED MOUNTAIN;So;0;ON;;;;;N;;;;; 1F3D5;CAMPING;So;0;ON;;;;;N;;;;; 1F3D6;BEACH WITH UMBRELLA;So;0;ON;;;;;N;;;;; @@ -25301,6 +27214,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F3F5;ROSETTE;So;0;ON;;;;;N;;;;; 1F3F6;BLACK ROSETTE;So;0;ON;;;;;N;;;;; 1F3F7;LABEL;So;0;ON;;;;;N;;;;; +1F3F8;BADMINTON RACQUET AND SHUTTLECOCK;So;0;ON;;;;;N;;;;; +1F3F9;BOW AND ARROW;So;0;ON;;;;;N;;;;; +1F3FA;AMPHORA;So;0;ON;;;;;N;;;;; +1F3FB;EMOJI MODIFIER FITZPATRICK TYPE-1-2;Sk;0;ON;;;;;N;;;;; +1F3FC;EMOJI MODIFIER FITZPATRICK TYPE-3;Sk;0;ON;;;;;N;;;;; +1F3FD;EMOJI MODIFIER FITZPATRICK TYPE-4;Sk;0;ON;;;;;N;;;;; +1F3FE;EMOJI MODIFIER FITZPATRICK TYPE-5;Sk;0;ON;;;;;N;;;;; +1F3FF;EMOJI MODIFIER FITZPATRICK TYPE-6;Sk;0;ON;;;;;N;;;;; 1F400;RAT;So;0;ON;;;;;N;;;;; 1F401;MOUSE;So;0;ON;;;;;N;;;;; 1F402;OX;So;0;ON;;;;;N;;;;; @@ -25556,6 +27477,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;; 1F4FD;FILM PROJECTOR;So;0;ON;;;;;N;;;;; 1F4FE;PORTABLE STEREO;So;0;ON;;;;;N;;;;; +1F4FF;PRAYER BEADS;So;0;ON;;;;;N;;;;; 1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;; 1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;; 1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;; @@ -25631,6 +27553,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F548;CELTIC CROSS;So;0;ON;;;;;N;;;;; 1F549;OM SYMBOL;So;0;ON;;;;;N;;;;; 1F54A;DOVE OF PEACE;So;0;ON;;;;;N;;;;; +1F54B;KAABA;So;0;ON;;;;;N;;;;; +1F54C;MOSQUE;So;0;ON;;;;;N;;;;; +1F54D;SYNAGOGUE;So;0;ON;;;;;N;;;;; +1F54E;MENORAH WITH NINE BRANCHES;So;0;ON;;;;;N;;;;; +1F54F;BOWL OF HYGIEIA;So;0;ON;;;;;N;;;;; 1F550;CLOCK FACE ONE OCLOCK;So;0;ON;;;;;N;;;;; 1F551;CLOCK FACE TWO OCLOCK;So;0;ON;;;;;N;;;;; 1F552;CLOCK FACE THREE OCLOCK;So;0;ON;;;;;N;;;;; @@ -25872,6 +27799,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;; 1F641;SLIGHTLY FROWNING FACE;So;0;ON;;;;;N;;;;; 1F642;SLIGHTLY SMILING FACE;So;0;ON;;;;;N;;;;; +1F643;UPSIDE-DOWN FACE;So;0;ON;;;;;N;;;;; +1F644;FACE WITH ROLLING EYES;So;0;ON;;;;;N;;;;; 1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;; 1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;; 1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;; @@ -26011,6 +27940,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6CD;SHOPPING BAGS;So;0;ON;;;;;N;;;;; 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;; 1F6CF;BED;So;0;ON;;;;;N;;;;; +1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;; 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; @@ -26377,12 +28307,29 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F8AB;RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;; 1F8AC;WHITE ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;; 1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;; +1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;; +1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;; +1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;; +1F913;NERD FACE;So;0;ON;;;;;N;;;;; +1F914;THINKING FACE;So;0;ON;;;;;N;;;;; +1F915;FACE WITH HEAD-BANDAGE;So;0;ON;;;;;N;;;;; +1F916;ROBOT FACE;So;0;ON;;;;;N;;;;; +1F917;HUGGING FACE;So;0;ON;;;;;N;;;;; +1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;; +1F980;CRAB;So;0;ON;;;;;N;;;;; +1F981;LION FACE;So;0;ON;;;;;N;;;;; +1F982;SCORPION;So;0;ON;;;;;N;;;;; +1F983;TURKEY;So;0;ON;;;;;N;;;;; +1F984;UNICORN FACE;So;0;ON;;;;;N;;;;; +1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; 2A6D6;;Lo;0;L;;;;;N;;;;; 2A700;;Lo;0;L;;;;;N;;;;; 2B734;;Lo;0;L;;;;;N;;;;; 2B740;;Lo;0;L;;;;;N;;;;; 2B81D;;Lo;0;L;;;;;N;;;;; +2B820;;Lo;0;L;;;;;N;;;;; +2CEA1;;Lo;0;L;;;;;N;;;;; 2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; 2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; 2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; diff --git a/jdk/make/data/unicodedata/VERSION b/jdk/make/data/unicodedata/VERSION index 66ce77b7ead..ae9a76b9249 100644 --- a/jdk/make/data/unicodedata/VERSION +++ b/jdk/make/data/unicodedata/VERSION @@ -1 +1 @@ -7.0.0 +8.0.0 diff --git a/jdk/src/java.base/share/classes/java/lang/Character.java b/jdk/src/java.base/share/classes/java/lang/Character.java index eb4ee65f760..ae3d1ef6bd8 100644 --- a/jdk/src/java.base/share/classes/java/lang/Character.java +++ b/jdk/src/java.base/share/classes/java/lang/Character.java @@ -42,7 +42,7 @@ import jdk.internal.HotSpotIntrinsicCandidate; * a character's category (lowercase letter, digit, etc.) and for converting * characters from uppercase to lowercase and vice versa. *

    - * Character information is based on the Unicode Standard, version 7.0.0. + * Character information is based on the Unicode Standard, version 8.0.0. *

    * The methods and data of class {@code Character} are defined by * the information in the UnicodeData file that is part of the @@ -2850,6 +2850,93 @@ class Character implements java.io.Serializable, Comparable { "SUPPLEMENTAL ARROWS-C", "SUPPLEMENTALARROWS-C"); + /** + * Constant for the "Cherokee Supplement" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock CHEROKEE_SUPPLEMENT = + new UnicodeBlock("CHEROKEE_SUPPLEMENT", + "CHEROKEE SUPPLEMENT", + "CHEROKEESUPPLEMENT"); + + /** + * Constant for the "Hatran" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock HATRAN = + new UnicodeBlock("HATRAN"); + + /** + * Constant for the "Old Hungarian" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock OLD_HUNGARIAN = + new UnicodeBlock("OLD_HUNGARIAN", + "OLD HUNGARIAN", + "OLDHUNGARIAN"); + + /** + * Constant for the "Multani" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock MULTANI = + new UnicodeBlock("MULTANI"); + + /** + * Constant for the "Ahom" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock AHOM = + new UnicodeBlock("AHOM"); + + /** + * Constant for the "Early Dynastic Cuneiform" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock EARLY_DYNASTIC_CUNEIFORM = + new UnicodeBlock("EARLY_DYNASTIC_CUNEIFORM", + "EARLY DYNASTIC CUNEIFORM", + "EARLYDYNASTICCUNEIFORM"); + + /** + * Constant for the "Anatolian Hieroglyphs" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock ANATOLIAN_HIEROGLYPHS = + new UnicodeBlock("ANATOLIAN_HIEROGLYPHS", + "ANATOLIAN HIEROGLYPHS", + "ANATOLIANHIEROGLYPHS"); + + /** + * Constant for the "Sutton SignWriting" Unicode character block. + * @since 1.9 + */ + public static final UnicodeBlock SUTTON_SIGNWRITING = + new UnicodeBlock("SUTTON_SIGNWRITING", + "SUTTON SIGNWRITING", + "SUTTONSIGNWRITING"); + + /** + * Constant for the "Supplemental Symbols and Pictographs" Unicode + * character block. + * @since 1.9 + */ + public static final UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS = + new UnicodeBlock("SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS", + "SUPPLEMENTAL SYMBOLS AND PICTOGRAPHS", + "SUPPLEMENTALSYMBOLSANDPICTOGRAPHS"); + + /** + * Constant for the "CJK Unified Ideographs Extension E" Unicode + * character block. + * @since 1.9 + */ + public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E = + new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E", + "CJK UNIFIED IDEOGRAPHS EXTENSION E", + "CJKUNIFIEDIDEOGRAPHSEXTENSIONE"); + + private static final int blockStarts[] = { 0x0000, // 0000..007F; Basic Latin 0x0080, // 0080..00FF; Latin-1 Supplement @@ -2995,7 +3082,7 @@ class Character implements java.io.Serializable, Comparable { 0xAAE0, // AAE0..AAFF; Meetei Mayek Extensions 0xAB00, // AB00..AB2F; Ethiopic Extended-A 0xAB30, // AB30..AB6F; Latin Extended-E - 0xAB70, // unassigned + 0xAB70, // AB70..ABBF; Cherokee Supplement 0xABC0, // ABC0..ABFF; Meetei Mayek 0xAC00, // AC00..D7AF; Hangul Syllables 0xD7B0, // D7B0..D7FF; Hangul Jamo Extended-B @@ -3044,6 +3131,7 @@ class Character implements java.io.Serializable, Comparable { 0x10860, // 10860..1087F; Palmyrene 0x10880, // 10880..108AF; Nabataean 0x108B0, // unassigned + 0x108E0, // 108E0..108FF; Hatran 0x10900, // 10900..1091F; Phoenician 0x10920, // 10920..1093F; Lydian 0x10940, // unassigned @@ -3061,6 +3149,8 @@ class Character implements java.io.Serializable, Comparable { 0x10BB0, // unassigned 0x10C00, // 10C00..10C4F; Old Turkic 0x10C50, // unassigned + 0x10C80, // 10C80..10CFF; Old Hungarian + 0x10D00, // unassigned 0x10E60, // 10E60..10E7F; Rumi Numeral Symbols 0x10E80, // unassigned 0x11000, // 11000..1107F; Brahmi @@ -3072,6 +3162,7 @@ class Character implements java.io.Serializable, Comparable { 0x111E0, // 111E0..111FF; Sinhala Archaic Numbers 0x11200, // 11200..1124F; Khojki 0x11250, // unassigned + 0x11280, // 11280..112AF; Multani 0x112B0, // 112B0..112FF; Khudawadi 0x11300, // 11300..1137F; Grantha 0x11380, // unassigned @@ -3082,15 +3173,20 @@ class Character implements java.io.Serializable, Comparable { 0x11660, // unassigned 0x11680, // 11680..116CF; Takri 0x116D0, // unassigned + 0x11700, // 11700..1173F; Ahom + 0x11740, // unassigned 0x118A0, // 118A0..118FF; Warang Citi 0x11900, // unassigned 0x11AC0, // 11AC0..11AFF; Pau Cin Hau 0x11B00, // unassigned 0x12000, // 12000..123FF; Cuneiform 0x12400, // 12400..1247F; Cuneiform Numbers and Punctuation - 0x12480, // unassigned + 0x12480, // 12480..1254F; Early Dynastic Cuneiform + 0x12550, // unassigned 0x13000, // 13000..1342F; Egyptian Hieroglyphs 0x13430, // unassigned + 0x14400, // 14400..1467F; Anatolian Hieroglyphs + 0x14680, // unassigned 0x16800, // 16800..16A3F; Bamum Supplement 0x16A40, // 16A40..16A6F; Mro 0x16A70, // unassigned @@ -3112,7 +3208,8 @@ class Character implements java.io.Serializable, Comparable { 0x1D360, // 1D360..1D37F; Counting Rod Numerals 0x1D380, // unassigned 0x1D400, // 1D400..1D7FF; Mathematical Alphanumeric Symbols - 0x1D800, // unassigned + 0x1D800, // 1D800..1DAAF; Sutton SignWriting + 0x1DAB0, // unassigned 0x1E800, // 1E800..1E8DF; Mende Kikakui 0x1E8E0, // unassigned 0x1EE00, // 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols @@ -3122,19 +3219,21 @@ class Character implements java.io.Serializable, Comparable { 0x1F0A0, // 1F0A0..1F0FF; Playing Cards 0x1F100, // 1F100..1F1FF; Enclosed Alphanumeric Supplement 0x1F200, // 1F200..1F2FF; Enclosed Ideographic Supplement - 0x1F300, // 1F300..1F5FF; Miscellaneous Symbols And Pictographs + 0x1F300, // 1F300..1F5FF; Miscellaneous Symbols and Pictographs 0x1F600, // 1F600..1F64F; Emoticons 0x1F650, // 1F650..1F67F; Ornamental Dingbats - 0x1F680, // 1F680..1F6FF; Transport And Map Symbols + 0x1F680, // 1F680..1F6FF; Transport and Map Symbols 0x1F700, // 1F700..1F77F; Alchemical Symbols 0x1F780, // 1F780..1F7FF; Geometric Shapes Extended 0x1F800, // 1F800..1F8FF; Supplemental Arrows-C - 0x1F900, // unassigned + 0x1F900, // 1F900..1F9FF; Supplemental Symbols and Pictographs + 0x1FA00, // unassigned 0x20000, // 20000..2A6DF; CJK Unified Ideographs Extension B 0x2A6E0, // unassigned 0x2A700, // 2A700..2B73F; CJK Unified Ideographs Extension C 0x2B740, // 2B740..2B81F; CJK Unified Ideographs Extension D - 0x2B820, // unassigned + 0x2B820, // 2B820..2CEAF; CJK Unified Ideographs Extension E + 0x2CEB0, // unassigned 0x2F800, // 2F800..2FA1F; CJK Compatibility Ideographs Supplement 0x2FA20, // unassigned 0xE0000, // E0000..E007F; Tags @@ -3290,7 +3389,7 @@ class Character implements java.io.Serializable, Comparable { MEETEI_MAYEK_EXTENSIONS, ETHIOPIC_EXTENDED_A, LATIN_EXTENDED_E, - null, + CHEROKEE_SUPPLEMENT, MEETEI_MAYEK, HANGUL_SYLLABLES, HANGUL_JAMO_EXTENDED_B, @@ -3339,6 +3438,7 @@ class Character implements java.io.Serializable, Comparable { PALMYRENE, NABATAEAN, null, + HATRAN, PHOENICIAN, LYDIAN, null, @@ -3356,6 +3456,8 @@ class Character implements java.io.Serializable, Comparable { null, OLD_TURKIC, null, + OLD_HUNGARIAN, + null, RUMI_NUMERAL_SYMBOLS, null, BRAHMI, @@ -3367,6 +3469,7 @@ class Character implements java.io.Serializable, Comparable { SINHALA_ARCHAIC_NUMBERS, KHOJKI, null, + MULTANI, KHUDAWADI, GRANTHA, null, @@ -3377,15 +3480,20 @@ class Character implements java.io.Serializable, Comparable { null, TAKRI, null, + AHOM, + null, WARANG_CITI, null, PAU_CIN_HAU, null, CUNEIFORM, CUNEIFORM_NUMBERS_AND_PUNCTUATION, + EARLY_DYNASTIC_CUNEIFORM, null, EGYPTIAN_HIEROGLYPHS, null, + ANATOLIAN_HIEROGLYPHS, + null, BAMUM_SUPPLEMENT, MRO, null, @@ -3407,6 +3515,7 @@ class Character implements java.io.Serializable, Comparable { COUNTING_ROD_NUMERALS, null, MATHEMATICAL_ALPHANUMERIC_SYMBOLS, + SUTTON_SIGNWRITING, null, MENDE_KIKAKUI, null, @@ -3424,11 +3533,13 @@ class Character implements java.io.Serializable, Comparable { ALCHEMICAL_SYMBOLS, GEOMETRIC_SHAPES_EXTENDED, SUPPLEMENTAL_ARROWS_C, + SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS, null, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B, null, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D, + CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E, null, CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, null, @@ -4214,6 +4325,42 @@ class Character implements java.io.Serializable, Comparable { */ WARANG_CITI, + /** + * Unicode script "Ahom". + * @since 1.9 + */ + AHOM, + + /** + * Unicode script "Anatolian Hieroglyphs". + * @since 1.9 + */ + ANATOLIAN_HIEROGLYPHS, + + /** + * Unicode script "Hatran". + * @since 1.9 + */ + HATRAN, + + /** + * Unicode script "Multani". + * @since 1.9 + */ + MULTANI, + + /** + * Unicode script "Old Hungarian". + * @since 1.9 + */ + OLD_HUNGARIAN, + + /** + * Unicode script "SignWriting". + * @since 1.9 + */ + SIGNWRITING, + /** * Unicode script "Unknown". */ @@ -4295,9 +4442,7 @@ class Character implements java.io.Serializable, Comparable { 0x0640, // 0640 ; COMMON 0x0641, // 0641..064A; ARABIC 0x064B, // 064B..0655; INHERITED - 0x0656, // 0656..065F; ARABIC - 0x0660, // 0660..0669; COMMON - 0x066A, // 066A..066F; ARABIC + 0x0656, // 0656..066F; ARABIC 0x0670, // 0670 ; INHERITED 0x0671, // 0671..06DC; ARABIC 0x06DD, // 06DD ; COMMON @@ -4320,9 +4465,9 @@ class Character implements java.io.Serializable, Comparable { 0x085C, // 085C..085D; UNKNOWN 0x085E, // 085E ; MANDAIC 0x085F, // 085F..089F; UNKNOWN - 0x08A0, // 08A0..08B2; ARABIC - 0x08B3, // 08B3..08E3; UNKNOWN - 0x08E4, // 08E4..08FF; ARABIC + 0x08A0, // 08A0..08B4; ARABIC + 0x08B5, // 08B5..08E2; UNKNOWN + 0x08E3, // 08E3..08FF; ARABIC 0x0900, // 0900..0950; DEVANAGARI 0x0951, // 0951..0952; INHERITED 0x0953, // 0953..0963; DEVANAGARI @@ -4413,7 +4558,9 @@ class Character implements java.io.Serializable, Comparable { 0x0AE0, // 0AE0..0AE3; GUJARATI 0x0AE4, // 0AE4..0AE5; UNKNOWN 0x0AE6, // 0AE6..0AF1; GUJARATI - 0x0AF2, // 0AF2..0B00; UNKNOWN + 0x0AF2, // 0AF2..0AF8; UNKNOWN + 0x0AF9, // 0AF9 ; GUJARATI + 0x0AFA, // 0AFA..0B00; UNKNOWN 0x0B01, // 0B01..0B03; ORIYA 0x0B04, // 0B04 ; UNKNOWN 0x0B05, // 0B05..0B0C; ORIYA @@ -4492,8 +4639,8 @@ class Character implements java.io.Serializable, Comparable { 0x0C4E, // 0C4E..0C54; UNKNOWN 0x0C55, // 0C55..0C56; TELUGU 0x0C57, // 0C57 ; UNKNOWN - 0x0C58, // 0C58..0C59; TELUGU - 0x0C5A, // 0C5A..0C5F; UNKNOWN + 0x0C58, // 0C58..0C5A; TELUGU + 0x0C5B, // 0C5B..0C5F; UNKNOWN 0x0C60, // 0C60..0C63; TELUGU 0x0C64, // 0C64..0C65; UNKNOWN 0x0C66, // 0C66..0C6F; TELUGU @@ -4543,8 +4690,8 @@ class Character implements java.io.Serializable, Comparable { 0x0D4A, // 0D4A..0D4E; MALAYALAM 0x0D4F, // 0D4F..0D56; UNKNOWN 0x0D57, // 0D57 ; MALAYALAM - 0x0D58, // 0D58..0D5F; UNKNOWN - 0x0D60, // 0D60..0D63; MALAYALAM + 0x0D58, // 0D58..0D5E; UNKNOWN + 0x0D5F, // 0D5F..0D63; MALAYALAM 0x0D64, // 0D64..0D65; UNKNOWN 0x0D66, // 0D66..0D75; MALAYALAM 0x0D76, // 0D76..0D78; UNKNOWN @@ -4676,8 +4823,10 @@ class Character implements java.io.Serializable, Comparable { 0x137D, // 137D..137F; UNKNOWN 0x1380, // 1380..1399; ETHIOPIC 0x139A, // 139A..139F; UNKNOWN - 0x13A0, // 13A0..13F4; CHEROKEE - 0x13F5, // 13F5..13FF; UNKNOWN + 0x13A0, // 13A0..13F5; CHEROKEE + 0x13F6, // 13F6..13F7; UNKNOWN + 0x13F8, // 13F8..13FD; CHEROKEE + 0x13FE, // 13FE..13FF; UNKNOWN 0x1400, // 1400..167F; CANADIAN_ABORIGINAL 0x1680, // 1680..169C; OGHAM 0x169D, // 169D..169F; UNKNOWN @@ -4846,8 +4995,8 @@ class Character implements java.io.Serializable, Comparable { 0x208F, // 208F ; UNKNOWN 0x2090, // 2090..209C; LATIN 0x209D, // 209D..209F; UNKNOWN - 0x20A0, // 20A0..20BD; COMMON - 0x20BE, // 20BE..20CF; UNKNOWN + 0x20A0, // 20A0..20BE; COMMON + 0x20BF, // 20BF..20CF; UNKNOWN 0x20D0, // 20D0..20F0; INHERITED 0x20F1, // 20F1..20FF; UNKNOWN 0x2100, // 2100..2125; COMMON @@ -4860,8 +5009,8 @@ class Character implements java.io.Serializable, Comparable { 0x214E, // 214E ; LATIN 0x214F, // 214F..215F; COMMON 0x2160, // 2160..2188; LATIN - 0x2189, // 2189 ; COMMON - 0x218A, // 218A..218F; UNKNOWN + 0x2189, // 2189..218B; COMMON + 0x218C, // 218C..218F; UNKNOWN 0x2190, // 2190..23FA; COMMON 0x23FB, // 23FB..23FF; UNKNOWN 0x2400, // 2400..2426; COMMON @@ -4879,7 +5028,9 @@ class Character implements java.io.Serializable, Comparable { 0x2BBD, // 2BBD..2BC8; COMMON 0x2BC9, // 2BC9 ; UNKNOWN 0x2BCA, // 2BCA..2BD1; COMMON - 0x2BD2, // 2BD2..2BFF; UNKNOWN + 0x2BD2, // 2BD2..2BEB; UNKNOWN + 0x2BEC, // 2BEC..2BEF; COMMON + 0x2BF0, // 2BF0..2BFF; UNKNOWN 0x2C00, // 2C00..2C2E; GLAGOLITIC 0x2C2F, // 2C2F ; UNKNOWN 0x2C30, // 2C30..2C5E; GLAGOLITIC @@ -4972,8 +5123,8 @@ class Character implements java.io.Serializable, Comparable { 0x3400, // 3400..4DB5; HAN 0x4DB6, // 4DB6..4DBF; UNKNOWN 0x4DC0, // 4DC0..4DFF; COMMON - 0x4E00, // 4E00..9FCC; HAN - 0x9FCD, // 9FCD..9FFF; UNKNOWN + 0x4E00, // 4E00..9FD5; HAN + 0x9FD6, // 9FD6..9FFF; UNKNOWN 0xA000, // A000..A48C; YI 0xA48D, // A48D..A48F; UNKNOWN 0xA490, // A490..A4C6; YI @@ -4981,20 +5132,16 @@ class Character implements java.io.Serializable, Comparable { 0xA4D0, // A4D0..A4FF; LISU 0xA500, // A500..A62B; VAI 0xA62C, // A62C..A63F; UNKNOWN - 0xA640, // A640..A69D; CYRILLIC - 0xA69E, // A69E ; UNKNOWN - 0xA69F, // A69F ; CYRILLIC + 0xA640, // A640..A69F; CYRILLIC 0xA6A0, // A6A0..A6F7; BAMUM 0xA6F8, // A6F8..A6FF; UNKNOWN 0xA700, // A700..A721; COMMON 0xA722, // A722..A787; LATIN 0xA788, // A788..A78A; COMMON - 0xA78B, // A78B..A78E; LATIN - 0xA78F, // A78F ; UNKNOWN - 0xA790, // A790..A7AD; LATIN + 0xA78B, // A78B..A7AD; LATIN 0xA7AE, // A7AE..A7AF; UNKNOWN - 0xA7B0, // A7B0..A7B1; LATIN - 0xA7B2, // A7B2..A7F6; UNKNOWN + 0xA7B0, // A7B0..A7B7; LATIN + 0xA7B8, // A7B8..A7F6; UNKNOWN 0xA7F7, // A7F7..A7FF; LATIN 0xA800, // A800..A82B; SYLOTI_NAGRI 0xA82C, // A82C..A82F; UNKNOWN @@ -5006,8 +5153,8 @@ class Character implements java.io.Serializable, Comparable { 0xA8C5, // A8C5..A8CD; UNKNOWN 0xA8CE, // A8CE..A8D9; SAURASHTRA 0xA8DA, // A8DA..A8DF; UNKNOWN - 0xA8E0, // A8E0..A8FB; DEVANAGARI - 0xA8FC, // A8FC..A8FF; UNKNOWN + 0xA8E0, // A8E0..A8FD; DEVANAGARI + 0xA8FE, // A8FE..A8FF; UNKNOWN 0xA900, // A900..A92D; KAYAH_LI 0xA92E, // A92E ; COMMON 0xA92F, // A92F ; KAYAH_LI @@ -5049,11 +5196,10 @@ class Character implements java.io.Serializable, Comparable { 0xAB2F, // AB2F ; UNKNOWN 0xAB30, // AB30..AB5A; LATIN 0xAB5B, // AB5B ; COMMON - 0xAB5C, // AB5C..AB5F; LATIN - 0xAB60, // AB60..AB63; UNKNOWN - 0xAB64, // AB64 ; LATIN + 0xAB5C, // AB5C..AB64; LATIN 0xAB65, // AB65 ; GREEK - 0xAB66, // AB66..ABBF; UNKNOWN + 0xAB66, // AB66..AB6F; UNKNOWN + 0xAB70, // AB70..ABBF; CHEROKEE 0xABC0, // ABC0..ABED; MEETEI_MAYEK 0xABEE, // ABEE..ABEF; UNKNOWN 0xABF0, // ABF0..ABF9; MEETEI_MAYEK @@ -5098,7 +5244,7 @@ class Character implements java.io.Serializable, Comparable { 0xFE10, // FE10..FE19; COMMON 0xFE1A, // FE1A..FE1F; UNKNOWN 0xFE20, // FE20..FE2D; INHERITED - 0xFE2E, // FE2E..FE2F; UNKNOWN + 0xFE2E, // FE2E..FE2F; CYRILLIC 0xFE30, // FE30..FE52; COMMON 0xFE53, // FE53 ; UNKNOWN 0xFE54, // FE54..FE66; COMMON @@ -5220,7 +5366,12 @@ class Character implements java.io.Serializable, Comparable { 0x10880, // 10880..1089E; NABATAEAN 0x1089F, // 1089F..108A6; UNKNOWN 0x108A7, // 108A7..108AF; NABATAEAN - 0x108B0, // 108B0..108FF; UNKNOWN + 0x108B0, // 108B0..108DF; UNKNOWN + 0x108E0, // 108E0..108F2; HATRAN + 0x108F3, // 108F3 ; UNKNOWN + 0x108F4, // 108F4..108F5; HATRAN + 0x108F6, // 108F6..108FA; UNKNOWN + 0x108FB, // 108FB..108FF; HATRAN 0x10900, // 10900..1091B; PHOENICIAN 0x1091C, // 1091C..1091E; UNKNOWN 0x1091F, // 1091F ; PHOENICIAN @@ -5230,9 +5381,10 @@ class Character implements java.io.Serializable, Comparable { 0x10940, // 10940..1097F; UNKNOWN 0x10980, // 10980..1099F; MEROITIC_HIEROGLYPHS 0x109A0, // 109A0..109B7; MEROITIC_CURSIVE - 0x109B8, // 109B8..109BD; UNKNOWN - 0x109BE, // 109BE..109BF; MEROITIC_CURSIVE - 0x109C0, // 109C0..109FF; UNKNOWN + 0x109B8, // 109B8..109BB; UNKNOWN + 0x109BC, // 109BC..109CF; MEROITIC_CURSIVE + 0x109D0, // 109D0..109D1; UNKNOWN + 0x109D2, // 109D2..109FF; MEROITIC_CURSIVE 0x10A00, // 10A00..10A03; KHAROSHTHI 0x10A04, // 10A04 ; UNKNOWN 0x10A05, // 10A05..10A06; KHAROSHTHI @@ -5272,7 +5424,13 @@ class Character implements java.io.Serializable, Comparable { 0x10BA9, // 10BA9..10BAF; PSALTER_PAHLAVI 0x10BB0, // 10BB0..10BFF; UNKNOWN 0x10C00, // 10C00..10C48; OLD_TURKIC - 0x10C49, // 10C49..10E5F; UNKNOWN + 0x10C49, // 10C49..10C7F; UNKNOWN + 0x10C80, // 10C80..10CB2; OLD_HUNGARIAN + 0x10CB3, // 10CB3..10CBF; UNKNOWN + 0x10CC0, // 10CC0..10CF2; OLD_HUNGARIAN + 0x10CF3, // 10CF3..10CF9; UNKNOWN + 0x10CFA, // 10CFA..10CFF; OLD_HUNGARIAN + 0x10D00, // 10D00..10E5F; UNKNOWN 0x10E60, // 10E60..10E7E; ARABIC 0x10E7F, // 10E7F..10FFF; UNKNOWN 0x11000, // 11000..1104D; BRAHMI @@ -5292,23 +5450,31 @@ class Character implements java.io.Serializable, Comparable { 0x11144, // 11144..1114F; UNKNOWN 0x11150, // 11150..11176; MAHAJANI 0x11177, // 11177..1117F; UNKNOWN - 0x11180, // 11180..111C8; SHARADA - 0x111C9, // 111C9..111CC; UNKNOWN - 0x111CD, // 111CD ; SHARADA + 0x11180, // 11180..111CD; SHARADA 0x111CE, // 111CE..111CF; UNKNOWN - 0x111D0, // 111D0..111DA; SHARADA - 0x111DB, // 111DB..111E0; UNKNOWN + 0x111D0, // 111D0..111DF; SHARADA + 0x111E0, // 111E0 ; UNKNOWN 0x111E1, // 111E1..111F4; SINHALA 0x111F5, // 111F5..111FF; UNKNOWN 0x11200, // 11200..11211; KHOJKI 0x11212, // 11212 ; UNKNOWN 0x11213, // 11213..1123D; KHOJKI - 0x1123E, // 1123E..112AF; UNKNOWN + 0x1123E, // 1123E..1127F; UNKNOWN + 0x11280, // 11280..11286; MULTANI + 0x11287, // 11287 ; UNKNOWN + 0x11288, // 11288 ; MULTANI + 0x11289, // 11289 ; UNKNOWN + 0x1128A, // 1128A..1128D; MULTANI + 0x1128E, // 1128E ; UNKNOWN + 0x1128F, // 1128F..1129D; MULTANI + 0x1129E, // 1129E ; UNKNOWN + 0x1129F, // 1129F..112A9; MULTANI + 0x112AA, // 112AA..112AF; UNKNOWN 0x112B0, // 112B0..112EA; KHUDAWADI 0x112EB, // 112EB..112EF; UNKNOWN 0x112F0, // 112F0..112F9; KHUDAWADI - 0x112FA, // 112FA..11300; UNKNOWN - 0x11301, // 11301..11303; GRANTHA + 0x112FA, // 112FA..112FF; UNKNOWN + 0x11300, // 11300..11303; GRANTHA 0x11304, // 11304 ; UNKNOWN 0x11305, // 11305..1130C; GRANTHA 0x1130D, // 1130D..1130E; UNKNOWN @@ -5327,7 +5493,9 @@ class Character implements java.io.Serializable, Comparable { 0x11347, // 11347..11348; GRANTHA 0x11349, // 11349..1134A; UNKNOWN 0x1134B, // 1134B..1134D; GRANTHA - 0x1134E, // 1134E..11356; UNKNOWN + 0x1134E, // 1134E..1134F; UNKNOWN + 0x11350, // 11350 ; GRANTHA + 0x11351, // 11351..11356; UNKNOWN 0x11357, // 11357 ; GRANTHA 0x11358, // 11358..1135C; UNKNOWN 0x1135D, // 1135D..11363; GRANTHA @@ -5342,8 +5510,8 @@ class Character implements java.io.Serializable, Comparable { 0x114DA, // 114DA..1157F; UNKNOWN 0x11580, // 11580..115B5; SIDDHAM 0x115B6, // 115B6..115B7; UNKNOWN - 0x115B8, // 115B8..115C9; SIDDHAM - 0x115CA, // 115CA..115FF; UNKNOWN + 0x115B8, // 115B8..115DD; SIDDHAM + 0x115DE, // 115DE..115FF; UNKNOWN 0x11600, // 11600..11644; MODI 0x11645, // 11645..1164F; UNKNOWN 0x11650, // 11650..11659; MODI @@ -5351,21 +5519,31 @@ class Character implements java.io.Serializable, Comparable { 0x11680, // 11680..116B7; TAKRI 0x116B8, // 116B8..116BF; UNKNOWN 0x116C0, // 116C0..116C9; TAKRI - 0x116CA, // 116CA..1189F; UNKNOWN + 0x116CA, // 116CA..116FF; UNKNOWN + 0x11700, // 11700..11719; AHOM + 0x1171A, // 1171A..1171C; UNKNOWN + 0x1171D, // 1171D..1172B; AHOM + 0x1172C, // 1172C..1172F; UNKNOWN + 0x11730, // 11730..1173F; AHOM + 0x11740, // 11740..1189F; UNKNOWN 0x118A0, // 118A0..118F2; WARANG_CITI 0x118F3, // 118F3..118FE; UNKNOWN 0x118FF, // 118FF ; WARANG_CITI 0x11900, // 11900..11ABF; UNKNOWN 0x11AC0, // 11AC0..11AF8; PAU_CIN_HAU 0x11AF9, // 11AF9..11FFF; UNKNOWN - 0x12000, // 12000..12398; CUNEIFORM - 0x12399, // 12399..123FF; UNKNOWN + 0x12000, // 12000..12399; CUNEIFORM + 0x1239A, // 1239A..123FF; UNKNOWN 0x12400, // 12400..1246E; CUNEIFORM 0x1246F, // 1246F ; UNKNOWN 0x12470, // 12470..12474; CUNEIFORM - 0x12475, // 12475..12FFF; UNKNOWN + 0x12475, // 12475..1247F; UNKNOWN + 0x12480, // 12480..12543; CUNEIFORM + 0x12544, // 12544..12FFF; UNKNOWN 0x13000, // 13000..1342E; EGYPTIAN_HIEROGLYPHS - 0x1342F, // 1342F..167FF; UNKNOWN + 0x1342F, // 1342F..143FF; UNKNOWN + 0x14400, // 14400..14646; ANATOLIAN_HIEROGLYPHS + 0x14647, // 14647..167FF; UNKNOWN 0x16800, // 16800..16A38; BAMUM 0x16A39, // 16A39..16A3F; UNKNOWN 0x16A40, // 16A40..16A5E; MRO @@ -5420,8 +5598,8 @@ class Character implements java.io.Serializable, Comparable { 0x1D185, // 1D185..1D18B; INHERITED 0x1D18C, // 1D18C..1D1A9; COMMON 0x1D1AA, // 1D1AA..1D1AD; INHERITED - 0x1D1AE, // 1D1AE..1D1DD; COMMON - 0x1D1DE, // 1D1DE..1D1FF; UNKNOWN + 0x1D1AE, // 1D1AE..1D1E8; COMMON + 0x1D1E9, // 1D1E9..1D1FF; UNKNOWN 0x1D200, // 1D200..1D245; GREEK 0x1D246, // 1D246..1D2FF; UNKNOWN 0x1D300, // 1D300..1D356; COMMON @@ -5469,7 +5647,12 @@ class Character implements java.io.Serializable, Comparable { 0x1D6A8, // 1D6A8..1D7CB; COMMON 0x1D7CC, // 1D7CC..1D7CD; UNKNOWN 0x1D7CE, // 1D7CE..1D7FF; COMMON - 0x1D800, // 1D800..1E7FF; UNKNOWN + 0x1D800, // 1D800..1DA8B; SIGNWRITING + 0x1DA8C, // 1DA8C..1DA9A; UNKNOWN + 0x1DA9B, // 1DA9B..1DA9F; SIGNWRITING + 0x1DAA0, // 1DAA0 ; UNKNOWN + 0x1DAA1, // 1DAA1..1DAAF; SIGNWRITING + 0x1DAB0, // 1DAB0..1E7FF; UNKNOWN 0x1E800, // 1E800..1E8C4; MENDE_KIKAKUI 0x1E8C5, // 1E8C5..1E8C6; UNKNOWN 0x1E8C7, // 1E8C7..1E8D6; MENDE_KIKAKUI @@ -5572,26 +5755,12 @@ class Character implements java.io.Serializable, Comparable { 0x1F249, // 1F249..1F24F; UNKNOWN 0x1F250, // 1F250..1F251; COMMON 0x1F252, // 1F252..1F2FF; UNKNOWN - 0x1F300, // 1F300..1F32C; COMMON - 0x1F32D, // 1F32D..1F32F; UNKNOWN - 0x1F330, // 1F330..1F37D; COMMON - 0x1F37E, // 1F37E..1F37F; UNKNOWN - 0x1F380, // 1F380..1F3CE; COMMON - 0x1F3CF, // 1F3CF..1F3D3; UNKNOWN - 0x1F3D4, // 1F3D4..1F3F7; COMMON - 0x1F3F8, // 1F3F8..1F3FF; UNKNOWN - 0x1F400, // 1F400..1F4FE; COMMON - 0x1F4FF, // 1F4FF ; UNKNOWN - 0x1F500, // 1F500..1F54A; COMMON - 0x1F54B, // 1F54B..1F54F; UNKNOWN - 0x1F550, // 1F550..1F579; COMMON + 0x1F300, // 1F300..1F579; COMMON 0x1F57A, // 1F57A ; UNKNOWN 0x1F57B, // 1F57B..1F5A3; COMMON 0x1F5A4, // 1F5A4 ; UNKNOWN - 0x1F5A5, // 1F5A5..1F642; COMMON - 0x1F643, // 1F643..1F644; UNKNOWN - 0x1F645, // 1F645..1F6CF; COMMON - 0x1F6D0, // 1F6D0..1F6DF; UNKNOWN + 0x1F5A5, // 1F5A5..1F6D0; COMMON + 0x1F6D1, // 1F6D1..1F6DF; UNKNOWN 0x1F6E0, // 1F6E0..1F6EC; COMMON 0x1F6ED, // 1F6ED..1F6EF; UNKNOWN 0x1F6F0, // 1F6F0..1F6F3; COMMON @@ -5609,13 +5778,21 @@ class Character implements java.io.Serializable, Comparable { 0x1F860, // 1F860..1F887; COMMON 0x1F888, // 1F888..1F88F; UNKNOWN 0x1F890, // 1F890..1F8AD; COMMON - 0x1F8AE, // 1F8AE..1FFFF; UNKNOWN + 0x1F8AE, // 1F8AE..1F90F; UNKNOWN + 0x1F910, // 1F910..1F918; COMMON + 0x1F919, // 1F919..1F97F; UNKNOWN + 0x1F980, // 1F980..1F984; COMMON + 0x1F985, // 1F985..1F9BF; UNKNOWN + 0x1F9C0, // 1F9C0 ; COMMON + 0x1F9C1, // 1F9C1..1FFFF; UNKNOWN 0x20000, // 20000..2A6D6; HAN 0x2A6D7, // 2A6D7..2A6FF; UNKNOWN 0x2A700, // 2A700..2B734; HAN 0x2B735, // 2B735..2B73F; UNKNOWN 0x2B740, // 2B740..2B81D; HAN - 0x2B81E, // 2B81E..2F7FF; UNKNOWN + 0x2B81E, // 2B81E..2B81F; UNKNOWN + 0x2B820, // 2B820..2CEA1; HAN + 0x2CEA2, // 2CEA2..2F7FF; UNKNOWN 0x2F800, // 2F800..2FA1D; HAN 0x2FA1E, // 2FA1E..E0000; UNKNOWN 0xE0001, // E0001 ; COMMON @@ -5702,9 +5879,7 @@ class Character implements java.io.Serializable, Comparable { COMMON, // 0640 ARABIC, // 0641..064A INHERITED, // 064B..0655 - ARABIC, // 0656..065F - COMMON, // 0660..0669 - ARABIC, // 066A..066F + ARABIC, // 0656..066F INHERITED, // 0670 ARABIC, // 0671..06DC COMMON, // 06DD @@ -5727,9 +5902,9 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 085C..085D MANDAIC, // 085E UNKNOWN, // 085F..089F - ARABIC, // 08A0..08B2 - UNKNOWN, // 08B3..08E3 - ARABIC, // 08E4..08FF + ARABIC, // 08A0..08B4 + UNKNOWN, // 08B5..08E2 + ARABIC, // 08E3..08FF DEVANAGARI, // 0900..0950 INHERITED, // 0951..0952 DEVANAGARI, // 0953..0963 @@ -5820,7 +5995,9 @@ class Character implements java.io.Serializable, Comparable { GUJARATI, // 0AE0..0AE3 UNKNOWN, // 0AE4..0AE5 GUJARATI, // 0AE6..0AF1 - UNKNOWN, // 0AF2..0B00 + UNKNOWN, // 0AF2..0AF8 + GUJARATI, // 0AF9 + UNKNOWN, // 0AFA..0B00 ORIYA, // 0B01..0B03 UNKNOWN, // 0B04 ORIYA, // 0B05..0B0C @@ -5899,8 +6076,8 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 0C4E..0C54 TELUGU, // 0C55..0C56 UNKNOWN, // 0C57 - TELUGU, // 0C58..0C59 - UNKNOWN, // 0C5A..0C5F + TELUGU, // 0C58..0C5A + UNKNOWN, // 0C5B..0C5F TELUGU, // 0C60..0C63 UNKNOWN, // 0C64..0C65 TELUGU, // 0C66..0C6F @@ -5950,8 +6127,8 @@ class Character implements java.io.Serializable, Comparable { MALAYALAM, // 0D4A..0D4E UNKNOWN, // 0D4F..0D56 MALAYALAM, // 0D57 - UNKNOWN, // 0D58..0D5F - MALAYALAM, // 0D60..0D63 + UNKNOWN, // 0D58..0D5E + MALAYALAM, // 0D5F..0D63 UNKNOWN, // 0D64..0D65 MALAYALAM, // 0D66..0D75 UNKNOWN, // 0D76..0D78 @@ -6083,8 +6260,10 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 137D..137F ETHIOPIC, // 1380..1399 UNKNOWN, // 139A..139F - CHEROKEE, // 13A0..13F4 - UNKNOWN, // 13F5..13FF + CHEROKEE, // 13A0..13F5 + UNKNOWN, // 13F6..13F7 + CHEROKEE, // 13F8..13FD + UNKNOWN, // 13FE..13FF CANADIAN_ABORIGINAL, // 1400..167F OGHAM, // 1680..169C UNKNOWN, // 169D..169F @@ -6253,8 +6432,8 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 208F LATIN, // 2090..209C UNKNOWN, // 209D..209F - COMMON, // 20A0..20BD - UNKNOWN, // 20BE..20CF + COMMON, // 20A0..20BE + UNKNOWN, // 20BF..20CF INHERITED, // 20D0..20F0 UNKNOWN, // 20F1..20FF COMMON, // 2100..2125 @@ -6267,8 +6446,8 @@ class Character implements java.io.Serializable, Comparable { LATIN, // 214E COMMON, // 214F..215F LATIN, // 2160..2188 - COMMON, // 2189 - UNKNOWN, // 218A..218F + COMMON, // 2189..218B + UNKNOWN, // 218C..218F COMMON, // 2190..23FA UNKNOWN, // 23FB..23FF COMMON, // 2400..2426 @@ -6286,7 +6465,9 @@ class Character implements java.io.Serializable, Comparable { COMMON, // 2BBD..2BC8 UNKNOWN, // 2BC9 COMMON, // 2BCA..2BD1 - UNKNOWN, // 2BD2..2BFF + UNKNOWN, // 2BD2..2BEB + COMMON, // 2BEC..2BEF + UNKNOWN, // 2BF0..2BFF GLAGOLITIC, // 2C00..2C2E UNKNOWN, // 2C2F GLAGOLITIC, // 2C30..2C5E @@ -6379,8 +6560,8 @@ class Character implements java.io.Serializable, Comparable { HAN, // 3400..4DB5 UNKNOWN, // 4DB6..4DBF COMMON, // 4DC0..4DFF - HAN, // 4E00..9FCC - UNKNOWN, // 9FCD..9FFF + HAN, // 4E00..9FD5 + UNKNOWN, // 9FD6..9FFF YI, // A000..A48C UNKNOWN, // A48D..A48F YI, // A490..A4C6 @@ -6388,20 +6569,16 @@ class Character implements java.io.Serializable, Comparable { LISU, // A4D0..A4FF VAI, // A500..A62B UNKNOWN, // A62C..A63F - CYRILLIC, // A640..A69D - UNKNOWN, // A69E - CYRILLIC, // A69F + CYRILLIC, // A640..A69F BAMUM, // A6A0..A6F7 UNKNOWN, // A6F8..A6FF COMMON, // A700..A721 LATIN, // A722..A787 COMMON, // A788..A78A - LATIN, // A78B..A78E - UNKNOWN, // A78F - LATIN, // A790..A7AD + LATIN, // A78B..A7AD UNKNOWN, // A7AE..A7AF - LATIN, // A7B0..A7B1 - UNKNOWN, // A7B2..A7F6 + LATIN, // A7B0..A7B7 + UNKNOWN, // A7B8..A7F6 LATIN, // A7F7..A7FF SYLOTI_NAGRI, // A800..A82B UNKNOWN, // A82C..A82F @@ -6413,8 +6590,8 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // A8C5..A8CD SAURASHTRA, // A8CE..A8D9 UNKNOWN, // A8DA..A8DF - DEVANAGARI, // A8E0..A8FB - UNKNOWN, // A8FC..A8FF + DEVANAGARI, // A8E0..A8FD + UNKNOWN, // A8FE..A8FF KAYAH_LI, // A900..A92D COMMON, // A92E KAYAH_LI, // A92F @@ -6456,11 +6633,10 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // AB2F LATIN, // AB30..AB5A COMMON, // AB5B - LATIN, // AB5C..AB5F - UNKNOWN, // AB60..AB63 - LATIN, // AB64 + LATIN, // AB5C..AB64 GREEK, // AB65 - UNKNOWN, // AB66..ABBF + UNKNOWN, // AB66..AB6F + CHEROKEE, // AB70..ABBF MEETEI_MAYEK, // ABC0..ABED UNKNOWN, // ABEE..ABEF MEETEI_MAYEK, // ABF0..ABF9 @@ -6505,7 +6681,7 @@ class Character implements java.io.Serializable, Comparable { COMMON, // FE10..FE19 UNKNOWN, // FE1A..FE1F INHERITED, // FE20..FE2D - UNKNOWN, // FE2E..FE2F + CYRILLIC, // FE2E..FE2F COMMON, // FE30..FE52 UNKNOWN, // FE53 COMMON, // FE54..FE66 @@ -6627,7 +6803,12 @@ class Character implements java.io.Serializable, Comparable { NABATAEAN, // 10880..1089E UNKNOWN, // 1089F..108A6 NABATAEAN, // 108A7..108AF - UNKNOWN, // 108B0..108FF + UNKNOWN, // 108B0..108DF + HATRAN, // 108E0..108F2 + UNKNOWN, // 108F3 + HATRAN, // 108F4..108F5 + UNKNOWN, // 108F6..108FA + HATRAN, // 108FB..108FF PHOENICIAN, // 10900..1091B UNKNOWN, // 1091C..1091E PHOENICIAN, // 1091F @@ -6637,9 +6818,10 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 10940..1097F MEROITIC_HIEROGLYPHS, // 10980..1099F MEROITIC_CURSIVE, // 109A0..109B7 - UNKNOWN, // 109B8..109BD - MEROITIC_CURSIVE, // 109BE..109BF - UNKNOWN, // 109C0..109FF + UNKNOWN, // 109B8..109BB + MEROITIC_CURSIVE, // 109BC..109CF + UNKNOWN, // 109D0..109D1 + MEROITIC_CURSIVE, // 109D2..109FF KHAROSHTHI, // 10A00..10A03 UNKNOWN, // 10A04 KHAROSHTHI, // 10A05..10A06 @@ -6679,7 +6861,13 @@ class Character implements java.io.Serializable, Comparable { PSALTER_PAHLAVI, // 10BA9..10BAF UNKNOWN, // 10BB0..10BFF OLD_TURKIC, // 10C00..10C48 - UNKNOWN, // 10C49..10E5F + UNKNOWN, // 10C49..10C7F + OLD_HUNGARIAN, // 10C80..10CB2 + UNKNOWN, // 10CB3..10CBF + OLD_HUNGARIAN, // 10CC0..10CF2 + UNKNOWN, // 10CF3..10CF9 + OLD_HUNGARIAN, // 10CFA..10CFF + UNKNOWN, // 10D00..10E5F ARABIC, // 10E60..10E7E UNKNOWN, // 10E7F..10FFF BRAHMI, // 11000..1104D @@ -6699,23 +6887,31 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 11144..1114F MAHAJANI, // 11150..11176 UNKNOWN, // 11177..1117F - SHARADA, // 11180..111C8 - UNKNOWN, // 111C9..111CC - SHARADA, // 111CD + SHARADA, // 11180..111CD UNKNOWN, // 111CE..111CF - SHARADA, // 111D0..111DA - UNKNOWN, // 111DB..111E0 + SHARADA, // 111D0..111DF + UNKNOWN, // 111E0 SINHALA, // 111E1..111F4 UNKNOWN, // 111F5..111FF KHOJKI, // 11200..11211 UNKNOWN, // 11212 KHOJKI, // 11213..1123D - UNKNOWN, // 1123E..112AF + UNKNOWN, // 1123E..1127F + MULTANI, // 11280..11286 + UNKNOWN, // 11287 + MULTANI, // 11288 + UNKNOWN, // 11289 + MULTANI, // 1128A..1128D + UNKNOWN, // 1128E + MULTANI, // 1128F..1129D + UNKNOWN, // 1129E + MULTANI, // 1129F..112A9 + UNKNOWN, // 112AA..112AF KHUDAWADI, // 112B0..112EA UNKNOWN, // 112EB..112EF KHUDAWADI, // 112F0..112F9 - UNKNOWN, // 112FA..11300 - GRANTHA, // 11301..11303 + UNKNOWN, // 112FA..112FF + GRANTHA, // 11300..11303 UNKNOWN, // 11304 GRANTHA, // 11305..1130C UNKNOWN, // 1130D..1130E @@ -6734,7 +6930,9 @@ class Character implements java.io.Serializable, Comparable { GRANTHA, // 11347..11348 UNKNOWN, // 11349..1134A GRANTHA, // 1134B..1134D - UNKNOWN, // 1134E..11356 + UNKNOWN, // 1134E..1134F + GRANTHA, // 11350 + UNKNOWN, // 11351..11356 GRANTHA, // 11357 UNKNOWN, // 11358..1135C GRANTHA, // 1135D..11363 @@ -6749,8 +6947,8 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 114DA..1157F SIDDHAM, // 11580..115B5 UNKNOWN, // 115B6..115B7 - SIDDHAM, // 115B8..115C9 - UNKNOWN, // 115CA..115FF + SIDDHAM, // 115B8..115DD + UNKNOWN, // 115DE..115FF MODI, // 11600..11644 UNKNOWN, // 11645..1164F MODI, // 11650..11659 @@ -6758,21 +6956,31 @@ class Character implements java.io.Serializable, Comparable { TAKRI, // 11680..116B7 UNKNOWN, // 116B8..116BF TAKRI, // 116C0..116C9 - UNKNOWN, // 116CA..1189F + UNKNOWN, // 116CA..116FF + AHOM, // 11700..11719 + UNKNOWN, // 1171A..1171C + AHOM, // 1171D..1172B + UNKNOWN, // 1172C..1172F + AHOM, // 11730..1173F + UNKNOWN, // 11740..1189F WARANG_CITI, // 118A0..118F2 UNKNOWN, // 118F3..118FE WARANG_CITI, // 118FF UNKNOWN, // 11900..11ABF PAU_CIN_HAU, // 11AC0..11AF8 UNKNOWN, // 11AF9..11FFF - CUNEIFORM, // 12000..12398 - UNKNOWN, // 12399..123FF + CUNEIFORM, // 12000..12399 + UNKNOWN, // 1239A..123FF CUNEIFORM, // 12400..1246E UNKNOWN, // 1246F CUNEIFORM, // 12470..12474 - UNKNOWN, // 12475..12FFF + UNKNOWN, // 12475..1247F + CUNEIFORM, // 12480..12543 + UNKNOWN, // 12544..12FFF EGYPTIAN_HIEROGLYPHS, // 13000..1342E - UNKNOWN, // 1342F..167FF + UNKNOWN, // 1342F..143FF + ANATOLIAN_HIEROGLYPHS, // 14400..14646 + UNKNOWN, // 14647..167FF BAMUM, // 16800..16A38 UNKNOWN, // 16A39..16A3F MRO, // 16A40..16A5E @@ -6827,8 +7035,8 @@ class Character implements java.io.Serializable, Comparable { INHERITED, // 1D185..1D18B COMMON, // 1D18C..1D1A9 INHERITED, // 1D1AA..1D1AD - COMMON, // 1D1AE..1D1DD - UNKNOWN, // 1D1DE..1D1FF + COMMON, // 1D1AE..1D1E8 + UNKNOWN, // 1D1E9..1D1FF GREEK, // 1D200..1D245 UNKNOWN, // 1D246..1D2FF COMMON, // 1D300..1D356 @@ -6876,7 +7084,12 @@ class Character implements java.io.Serializable, Comparable { COMMON, // 1D6A8..1D7CB UNKNOWN, // 1D7CC..1D7CD COMMON, // 1D7CE..1D7FF - UNKNOWN, // 1D800..1E7FF + SIGNWRITING, // 1D800..1DA8B + UNKNOWN, // 1DA8C..1DA9A + SIGNWRITING, // 1DA9B..1DA9F + UNKNOWN, // 1DAA0 + SIGNWRITING, // 1DAA1..1DAAF + UNKNOWN, // 1DAB0..1E7FF MENDE_KIKAKUI, // 1E800..1E8C4 UNKNOWN, // 1E8C5..1E8C6 MENDE_KIKAKUI, // 1E8C7..1E8D6 @@ -6979,26 +7192,12 @@ class Character implements java.io.Serializable, Comparable { UNKNOWN, // 1F249..1F24F COMMON, // 1F250..1F251 UNKNOWN, // 1F252..1F2FF - COMMON, // 1F300..1F32C - UNKNOWN, // 1F32D..1F32F - COMMON, // 1F330..1F37D - UNKNOWN, // 1F37E..1F37F - COMMON, // 1F380..1F3CE - UNKNOWN, // 1F3CF..1F3D3 - COMMON, // 1F3D4..1F3F7 - UNKNOWN, // 1F3F8..1F3FF - COMMON, // 1F400..1F4FE - UNKNOWN, // 1F4FF - COMMON, // 1F500..1F54A - UNKNOWN, // 1F54B..1F54F - COMMON, // 1F550..1F579 + COMMON, // 1F300..1F579 UNKNOWN, // 1F57A COMMON, // 1F57B..1F5A3 UNKNOWN, // 1F5A4 - COMMON, // 1F5A5..1F642 - UNKNOWN, // 1F643..1F644 - COMMON, // 1F645..1F6CF - UNKNOWN, // 1F6D0..1F6DF + COMMON, // 1F5A5..1F6D0 + UNKNOWN, // 1F6D1..1F6DF COMMON, // 1F6E0..1F6EC UNKNOWN, // 1F6ED..1F6EF COMMON, // 1F6F0..1F6F3 @@ -7016,13 +7215,21 @@ class Character implements java.io.Serializable, Comparable { COMMON, // 1F860..1F887 UNKNOWN, // 1F888..1F88F COMMON, // 1F890..1F8AD - UNKNOWN, // 1F8AE..1FFFF + UNKNOWN, // 1F8AE..1F90F + COMMON, // 1F910..1F918 + UNKNOWN, // 1F919..1F97F + COMMON, // 1F980..1F984 + UNKNOWN, // 1F985..1F9BF + COMMON, // 1F9C0 + UNKNOWN, // 1F9C1..1FFFF HAN, // 20000..2A6D6 UNKNOWN, // 2A6D7..2A6FF HAN, // 2A700..2B734 UNKNOWN, // 2B735..2B73F HAN, // 2B740..2B81D - UNKNOWN, // 2B81E..2F7FF + UNKNOWN, // 2B81E..2B81F + HAN, // 2B820..2CEA1 + UNKNOWN, // 2CEA2..2F7FF HAN, // 2F800..2FA1D UNKNOWN, // 2FA1E..E0000 COMMON, // E0001 @@ -7035,8 +7242,9 @@ class Character implements java.io.Serializable, Comparable { private static HashMap aliases; static { - aliases = new HashMap<>(128); + aliases = new HashMap<>(134); aliases.put("AGHB", CAUCASIAN_ALBANIAN); + aliases.put("AHOM", AHOM); aliases.put("ARAB", ARABIC); aliases.put("ARMI", IMPERIAL_ARAMAIC); aliases.put("ARMN", ARMENIAN); @@ -7075,11 +7283,14 @@ class Character implements java.io.Serializable, Comparable { aliases.put("HANG", HANGUL); aliases.put("HANI", HAN); aliases.put("HANO", HANUNOO); + aliases.put("HATR", HATRAN); aliases.put("HEBR", HEBREW); aliases.put("HIRA", HIRAGANA); + aliases.put("HLUW", ANATOLIAN_HIEROGLYPHS); aliases.put("HMNG", PAHAWH_HMONG); // it appears we don't have the KATAKANA_OR_HIRAGANA //aliases.put("HRKT", KATAKANA_OR_HIRAGANA); + aliases.put("HUNG", OLD_HUNGARIAN); aliases.put("ITAL", OLD_ITALIC); aliases.put("JAVA", JAVANESE); aliases.put("KALI", KAYAH_LI); @@ -7110,6 +7321,7 @@ class Character implements java.io.Serializable, Comparable { aliases.put("MONG", MONGOLIAN); aliases.put("MROO", MRO); aliases.put("MTEI", MEETEI_MAYEK); + aliases.put("MULT", MULTANI); aliases.put("MYMR", MYANMAR); aliases.put("NARB", OLD_NORTH_ARABIAN); aliases.put("NBAT", NABATAEAN); @@ -7133,6 +7345,7 @@ class Character implements java.io.Serializable, Comparable { aliases.put("SAMR", SAMARITAN); aliases.put("SARB", OLD_SOUTH_ARABIAN); aliases.put("SAUR", SAURASHTRA); + aliases.put("SGNW", SIGNWRITING); aliases.put("SHAW", SHAVIAN); aliases.put("SHRD", SHARADA); aliases.put("SIDD", SIDDHAM); @@ -9356,7 +9569,7 @@ class Character implements java.io.Serializable, Comparable { * {@code FORM FEED} * {@code '\r'} {@code U+000D} * {@code CARRIAGE RETURN} - * {@code ' '} {@code U+0020} + * {@code ' '} {@code U+0020} * {@code SPACE} * * diff --git a/jdk/src/java.base/share/classes/sun/text/resources/nfc.icu b/jdk/src/java.base/share/classes/sun/text/resources/nfc.icu index 1cd67e08581084c7ef7ddc43f0741db786193af8..380985120e2677fb11d0a217de81fdbcdd3feab5 100644 GIT binary patch delta 5347 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 diff --git a/jdk/src/java.base/share/classes/sun/text/resources/nfkc_cf.icu b/jdk/src/java.base/share/classes/sun/text/resources/nfkc_cf.icu index b23f0d79d04aa6131d7f6bc6adba816214d20897..596f4ce352c6853e52ab3f5741bd650585e2cc2d 100644 GIT binary patch delta 7661 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 delta 7071 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 diff --git a/jdk/src/java.base/share/classes/sun/text/resources/ubidi.icu b/jdk/src/java.base/share/classes/sun/text/resources/ubidi.icu index 73774edc2452e95b0c92dbe32ff58c0ed0ba2f0c..6d6723a330138c3592be56c2da2b5c72ff9e2fa7 100644 GIT binary patch literal 23312 zcmeHP36LCR74Dh7dv~(C*<3{8Zf3|Eqr=HS>2x}P}1&dtsp&fU%qXQ%Us^SJXg(0@341>NVC zogJ?4wm5gY6YK%^K)2JK>CSTJxbr~2z+H@f_5k?Z4YdroCyVV0_Y6T-xvN2Uj=L7N z=erx+jc&WpU*cZwUgd59i&z8I-AhIt?^)O%G~Ci zuSlu|BW>_5^aj0ayz9M7y&>-w?@sS7_ag82-hF&4(~aC zhCkaL@DKCnqt!pg>vWIyj|c7~%;Zh0d6BQS^*=6c{wIa^XZ$s0eT?zX_b>1_`fL5m z{j2;f{;+?Wf0uuse+k+B2mC+#kNZ#i&*}dDizNH6)%4qfQV_cR_CU}qJi9nP(x5#! zAea?QM{F=h?8)z`@nBW2+CK%`ykG%r7t3tHGQ@dP?C+}hG5(#^0o=#$tcu2}8SB7U z2gW+^?(0A>4?hXS*A<+Gy5J0V7E*TruE~>y<}AVn=LBorX9Mv$#hnps0PM!#V)zU< z9KdH$2R=0gKMH>C>;$^S*%81eFLegDsnQrf)`77OjCJ7M+=1Ya!Ck?<@J%^&27h8( z@I>%r@LaGrcsY23bYVG+>@&mh;Z*8TSZ%adl{;X*K5o9C$ip1BcHGV5UTSe#j%`_r za?2p;TYlFXv@UA>cI);wtF6E7+_qcWUXA*rbg|oaASCJ_yc=S_(NQg zGaSMlr*JdKH@J_WCj1qz)PF7fwY|sL>CO!AWu2tqj__eAf!|-k-6)68xNr{<=nJ@Y zZwg;kQQ3U>x;+q;vvJvoD9Fa-LpXb))_h1E6-|yhqJvO}$5_-Wttk5orCfxIWfUOIaPX-cl=t5jU1mEnEr@$h#e(Pbtkx-z=DrW5yfqbnd2WRI?g*Db+Bk-2upMDUF= z?>+nEO7m!=JM*CSA11mp`fK!%n2$wb!tXZ9jGiLx+qbpG$7W#p@KaX^+qg|?e6SNP zvLee76Sz6iUX*Ri6E6>bK8sJ!ik1TEendv*k7Ie{W#IQ9c{k=iK2Ns&icvc%`TQL8 zvetb^bW?P65VylZ#yx|30Q*E8gI_X*oup!m8&$WJ6pi{Tp>ngLBO01kp1eh1vW2uV zP#jg?lki)uw|8>=SdBSU4cS$ViQa#5dRD!6`>%rJ$W#}0#(@U|^jh9b31d@yxh;X_ zt(>kUC$6|6t}+$4u2;nQk-XkYa2?ojE`isk+FSyZUQ2-Dlor;Qw6}(2{U#wNXHC+| z>LurhHC1YnsD{c&jhu-nS6Gkg9*s$xL{;%@OO)QBwE{1Fy)NtzRfF9}S!&TQ{w`du zb(r@S(zJP<$ZB?mS4_3D#Hc0ULoeK_6{ho;KPei<+$1JNPun7fZOBPka%4|i>1g!H z>!}|p>0Dl5H9F&!U>-bwaZXpRAdKYe7*o_I)mBeu#zJ|$vX=EiQZ;g&sHNBxh4WDN zIC62yM}bQ57}zv&gz*uPyq_pz^7}wu?N$Kdi-x%dsZX-ARizkV^rI2qq;;5;d!nNkM3G)PN1c#5mXkY#+T@XLiR0B3sq2X&>uac%Aq}KT zMQSqFMeEOdZp} zmQr+eEhd&^)gu{^rOm3E{q;;Fp)cBt57mn@WW|tmq#>yeH8LWzs>`ycWn+E5>h<%V zB#wZzk!u3_hqx&^3LLcOZ6SxWx4~I`kfnPAXOduUB7TRt!X&M>fK*n@N|6{`?^DYqIq&eM9h zLSCIpO&iD1>tV^vsYc4;IWkhls=8u4o}YA1CHvL0p+_D&qaw?z{Q^|%EDqt<3ZCPG z3Bg48n~+H(8nnQ#7GkLPv26H_i9cb5@J<(>!|-=cbAzGa$F)_YR|UU!1zUpagBycu zgB##3C;g&@+nUdz(F>}#S_kuLJ+*REiHtuwj*p8pinYqULR?ZY5+$wbI?+?U2xESV zXHUv0q*fV&t!g!rmpGl1Ud)kQmvkRR!o8LD!aa(%K`~ovTcWJ9qSo4^{r`ms=Z#{L z23Ba}(J=@(){u|ti#E1PJ;#<7LbZyzq!nYElXBsf*C#d1p$|o53{%yQbxD*eV++T{ z)k>Z@L?MsWV*hZ972xCuOerpTqMc(%%1Fw@vC+;Jl}bP2M!s_;L^iP~$7`r_{o-S< zIL%p&s4)B7NRO7kGBXBW!?Gx6F#TE1Sv~KkB$~XRP>Xw>_75EwOJV=r&zXVp5ho+i z5lAv0H+gf)D9GWlit*`~WvXKkF(@!p-^lY2wHlK$e=(XHy%-IPb*XmBNg30(W_~(r zq!#NyZ?1>dL3Vj|QfE=i70@afhiCO5L^0#C%ogr2%B*9Ir0J_sE!=I2BO@Zmd1Oqv zKGLC_UV-$}In1wX)VN$7RfaefPZ?!TQDz-`sxsS6s$(&Wi69N))OakbXpWU+L!4YI zu6t0Cr6q;K>p&4aVn^e{e(Blb7Lh1r!!@Uv6*VJe1^j7T0RgMxXpOqPh=jk|j_hxW zO#4aSTSm^B5Bu^t%ruV9sWI24uQV>@S!vvhH0+zyLH>-37}buRa!{ObWNpI2Jy0nk zR2g~QO9susVRd>X^_*m;WUiiXJsU-7Ha!{gQZmF4u#AxD|Hw z9jA6z3GNrw-q#UF_nNqd^!4Sj42#VCWH98fy~n*p&t+4#k@rt?;zhdT||FFY<5oa`Sj{&xRN|Da&o+%b(-v~cP1_+d)3o&R>UBWV@PcE z4dW0YdE#_reJS62F~=}7WqZqtxKfU#Q!}z|&60F)LQ7qiw`!MOR4?05FZT#*i&BoR z`ZXGv{MCr{c&>mcV)d2k-qOY%ln?ds!5HOa7_I7bo_~GQ zwM8Y$6ZhiiOt~JW=)rtijCfSmuqVs)C|;!q-@xYsxLcNc6v1-P6ra(2o-lp5SNSLx zR1eJ*=(%0DF6Rs5-IKSzTCOSG}~ny?V86 zRj(=UuKvRAtZuPZR(Fc7gJ)tAcs)tAdFtFM&$tNThTtN$sjtHS^KsQ$OK zz50f=Zq}_<|EzyoL)}kUySx8xZSQ`nWOYB?YuR>>-D|^t+;u9IisyB7bahRiK67TN z)YR11*Jp*(+9yq!+S=3G%azrk&NK)IcME!Ydif9hAt(-yM+c8Ck*5@jF>PAY`Nzl1UrK_W2 z+kJh#Jw1mXUg_#;*ZjwXSO?&!n;A}bJ!QNpGjIe&hC|A(wotmVrs tYr)AMTexuHu^(P~-0>eh>ZnDFKC*c6;u9_SvpF$NIQpbz$84^R{{xW9gW~`I literal 22976 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 diff --git a/jdk/src/java.base/share/classes/sun/text/resources/uprops.icu b/jdk/src/java.base/share/classes/sun/text/resources/uprops.icu index 57c6806462c426b4b6f4b5a63ee6725817ac7dcd..5fcaabf7dae6b428e7ba266b04a024d002d0a066 100644 GIT binary patch literal 117680 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

    -K!H*%OiJcWw?vukZ;eoCr(DhX=7wh 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 Sprh+!*gpr>%ZYA}fBpv-T&-mQ literal 113360 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 diff --git a/jdk/src/java.desktop/share/classes/java/awt/font/NumericShaper.java b/jdk/src/java.desktop/share/classes/java/awt/font/NumericShaper.java index 639ea12b600..524d230fdc4 100644 --- a/jdk/src/java.desktop/share/classes/java/awt/font/NumericShaper.java +++ b/jdk/src/java.desktop/share/classes/java/awt/font/NumericShaper.java @@ -672,7 +672,7 @@ public final class NumericShaper implements java.io.Serializable { 0x0825, 0x0828, 0x0829, 0x082e, 0x0859, 0x085c, - 0x08e4, 0x0903, + 0x08e3, 0x0903, 0x093a, 0x093b, 0x093c, 0x093d, 0x0941, 0x0949, @@ -721,7 +721,8 @@ public final class NumericShaper implements java.io.Serializable { 0x0acd, 0x0ad0, 0x0ad1, 0x0ae0, 0x0ae2, 0x0ae6, - 0x0af1, 0x0b02, + 0x0af1, 0x0af9, + 0x0afa, 0x0b02, 0x0b04, 0x0b05, 0x0b0d, 0x0b0f, 0x0b11, 0x0b13, @@ -761,7 +762,7 @@ public final class NumericShaper implements java.io.Serializable { 0x0c3a, 0x0c3d, 0x0c3e, 0x0c41, 0x0c45, 0x0c58, - 0x0c5a, 0x0c60, + 0x0c5b, 0x0c60, 0x0c62, 0x0c66, 0x0c70, 0x0c7f, 0x0c80, 0x0c82, @@ -787,7 +788,7 @@ public final class NumericShaper implements java.io.Serializable { 0x0d49, 0x0d4a, 0x0d4d, 0x0d4e, 0x0d4f, 0x0d57, - 0x0d58, 0x0d60, + 0x0d58, 0x0d5f, 0x0d62, 0x0d66, 0x0d76, 0x0d79, 0x0d80, 0x0d82, @@ -867,7 +868,8 @@ public final class NumericShaper implements java.io.Serializable { 0x135b, 0x1360, 0x137d, 0x1380, 0x1390, 0x13a0, - 0x13f5, 0x1401, + 0x13f6, 0x13f8, + 0x13fe, 0x1401, 0x1680, 0x1681, 0x169b, 0x16a0, 0x16f9, 0x1700, @@ -1019,7 +1021,7 @@ public final class NumericShaper implements java.io.Serializable { 0x33de, 0x33e0, 0x33ff, 0x3400, 0x4db6, 0x4e00, - 0x9fcd, 0xa000, + 0x9fd6, 0xa000, 0xa48d, 0xa4d0, 0xa60d, 0xa610, 0xa62c, 0xa640, @@ -1028,9 +1030,8 @@ public final class NumericShaper implements java.io.Serializable { 0xa6f0, 0xa6f2, 0xa6f8, 0xa722, 0xa788, 0xa789, - 0xa78f, 0xa790, 0xa7ae, 0xa7b0, - 0xa7b2, 0xa7f7, + 0xa7b8, 0xa7f7, 0xa802, 0xa803, 0xa806, 0xa807, 0xa80b, 0xa80c, @@ -1040,7 +1041,7 @@ public final class NumericShaper implements java.io.Serializable { 0xa874, 0xa880, 0xa8c4, 0xa8ce, 0xa8da, 0xa8f2, - 0xa8fc, 0xa900, + 0xa8fe, 0xa900, 0xa926, 0xa92e, 0xa947, 0xa952, 0xa954, 0xa95f, @@ -1073,8 +1074,7 @@ public final class NumericShaper implements java.io.Serializable { 0xab17, 0xab20, 0xab27, 0xab28, 0xab2f, 0xab30, - 0xab60, 0xab64, - 0xab66, 0xabc0, + 0xab66, 0xab70, 0xabe5, 0xabe6, 0xabe8, 0xabe9, 0xabed, 0xabf0, @@ -1152,15 +1152,20 @@ public final class NumericShaper implements java.io.Serializable { 0x11173, 0x11174, 0x11177, 0x11182, 0x111b6, 0x111bf, - 0x111c9, 0x111cd, + 0x111ca, 0x111cd, 0x111ce, 0x111d0, - 0x111db, 0x111e1, + 0x111e0, 0x111e1, 0x111f5, 0x11200, 0x11212, 0x11213, 0x1122f, 0x11232, 0x11234, 0x11235, 0x11236, 0x11238, - 0x1123e, 0x112b0, + 0x1123e, 0x11280, + 0x11287, 0x11288, + 0x11289, 0x1128a, + 0x1128e, 0x1128f, + 0x1129e, 0x1129f, + 0x112aa, 0x112b0, 0x112df, 0x112e0, 0x112e3, 0x112f0, 0x112fa, 0x11302, @@ -1174,7 +1179,8 @@ public final class NumericShaper implements java.io.Serializable { 0x11340, 0x11341, 0x11345, 0x11347, 0x11349, 0x1134b, - 0x1134e, 0x11357, + 0x1134e, 0x11350, + 0x11351, 0x11357, 0x11358, 0x1135d, 0x11364, 0x11480, 0x114b3, 0x114b9, @@ -1186,7 +1192,7 @@ public final class NumericShaper implements java.io.Serializable { 0x115b2, 0x115b8, 0x115bc, 0x115be, 0x115bf, 0x115c1, - 0x115ca, 0x11600, + 0x115dc, 0x11600, 0x11633, 0x1163b, 0x1163d, 0x1163e, 0x1163f, 0x11641, @@ -1196,14 +1202,20 @@ public final class NumericShaper implements java.io.Serializable { 0x116ad, 0x116ae, 0x116b0, 0x116b6, 0x116b7, 0x116c0, - 0x116ca, 0x118a0, + 0x116ca, 0x11700, + 0x1171a, 0x11720, + 0x11722, 0x11726, + 0x11727, 0x11730, + 0x11740, 0x118a0, 0x118f3, 0x118ff, 0x11900, 0x11ac0, 0x11af9, 0x12000, - 0x12399, 0x12400, + 0x1239a, 0x12400, 0x1246f, 0x12470, - 0x12475, 0x13000, - 0x1342f, 0x16800, + 0x12475, 0x12480, + 0x12544, 0x13000, + 0x1342f, 0x14400, + 0x14647, 0x16800, 0x16a39, 0x16a40, 0x16a5f, 0x16a60, 0x16a6a, 0x16a6e, @@ -1232,7 +1244,7 @@ public final class NumericShaper implements java.io.Serializable { 0x1d173, 0x1d183, 0x1d185, 0x1d18c, 0x1d1aa, 0x1d1ae, - 0x1d1de, 0x1d360, + 0x1d1e9, 0x1d360, 0x1d372, 0x1d400, 0x1d455, 0x1d456, 0x1d49d, 0x1d49e, @@ -1258,7 +1270,12 @@ public final class NumericShaper implements java.io.Serializable { 0x1d74f, 0x1d750, 0x1d789, 0x1d78a, 0x1d7c3, 0x1d7c4, - 0x1d7cc, 0x1e800, + 0x1d7cc, 0x1d800, + 0x1da00, 0x1da37, + 0x1da3b, 0x1da6d, + 0x1da75, 0x1da76, + 0x1da84, 0x1da85, + 0x1da8c, 0x1e800, 0x1e8d0, 0x1e8d7, 0x1eef0, 0x1eef2, 0x1f000, 0x1f110, @@ -1271,7 +1288,8 @@ public final class NumericShaper implements java.io.Serializable { 0x1f252, 0x20000, 0x2a6d7, 0x2a700, 0x2b735, 0x2b740, - 0x2b81e, 0x2f800, + 0x2b81e, 0x2b820, + 0x2cea2, 0x2f800, 0x2fa1e, 0xf0000, 0xffffe, 0x100000, 0x10fffe, 0x10ffff // sentinel diff --git a/jdk/test/java/lang/Character/CheckProp.java b/jdk/test/java/lang/Character/CheckProp.java index e00eae37cc5..12dc690fe51 100644 --- a/jdk/test/java/lang/Character/CheckProp.java +++ b/jdk/test/java/lang/Character/CheckProp.java @@ -24,7 +24,7 @@ /** * @test - * @bug 7037261 7070436 7198195 8032446 + * @bug 7037261 7070436 7198195 8032446 8072600 * @summary Check j.l.Character.isLowerCase/isUppercase/isAlphabetic/isIdeographic */ diff --git a/jdk/test/java/lang/Character/CheckScript.java b/jdk/test/java/lang/Character/CheckScript.java index 5a8b2794337..59e139d1cf6 100644 --- a/jdk/test/java/lang/Character/CheckScript.java +++ b/jdk/test/java/lang/Character/CheckScript.java @@ -23,7 +23,7 @@ /** * @test - * @bug 6945564 6959267 7033561 7070436 7198195 8032446 + * @bug 6945564 6959267 7033561 7070436 7198195 8032446 8072600 * @summary Check that the j.l.Character.UnicodeScript */ diff --git a/jdk/test/java/lang/Character/PropList.txt b/jdk/test/java/lang/Character/PropList.txt index 82f650d5749..2eb2926e072 100644 --- a/jdk/test/java/lang/Character/PropList.txt +++ b/jdk/test/java/lang/Character/PropList.txt @@ -1,8 +1,8 @@ -# PropList-7.0.0.txt -# Date: 2014-02-19, 15:51:26 GMT [MD] +# PropList-8.0.0.txt +# Date: 2015-05-16, 17:50:38 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -189,18 +189,22 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111CD ; Terminal_Punctuation # Po SHARADA SUTRA MARK +111DE..111DF ; Terminal_Punctuation # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK +112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK 115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR -115C9 ; Terminal_Punctuation # Po SIDDHAM END OF TEXT MARK +115C9..115D7 ; Terminal_Punctuation # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA +1173C..1173E ; Terminal_Punctuation # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP 16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM 16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS 1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON -# Total code points: 214 +# Total code points: 238 # ================================================ @@ -425,7 +429,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN -08E4..08E9 ; Other_Alphabetic # Mn [6] ARABIC CURLY FATHA..ARABIC CURLY KASRATAN +08E3..08E9 ; Other_Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN 08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA 0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA 093A ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN OE @@ -560,8 +564,6 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -19B0..19C0 ; Other_Alphabetic # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C8..19C9 ; Other_Alphabetic # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Other_Alphabetic # Mn BUGINESE VOWEL SIGN AE @@ -605,7 +607,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA -A69F ; Other_Alphabetic # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Other_Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO @@ -672,7 +674,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU -11301 ; Other_Alphabetic # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Other_Alphabetic # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Other_Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; Other_Alphabetic # Mn GRANTHA VOWEL SIGN II @@ -693,6 +695,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 115B8..115BB ; Other_Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Other_Alphabetic # Mc SIDDHAM SIGN VISARGA +115DC..115DD ; Other_Alphabetic # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11630..11632 ; Other_Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Other_Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Other_Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU @@ -704,6 +707,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU +1171D..1171F ; Other_Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Other_Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Other_Alphabetic # Mc AHOM VOWEL SIGN E +11727..1172A ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM 16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK @@ -720,15 +728,16 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Ideographic # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Ideographic # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 75633 +# Total code points: 81404 # ================================================ @@ -773,7 +782,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH -08E4..08FE ; Diacritic # Mn [27] ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT +08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT 093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA 094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA 0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT @@ -877,7 +886,7 @@ AB5C..AB5F ; Diacritic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FE20..FE2D ; Diacritic # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F ; Diacritic # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK @@ -889,6 +898,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA 11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA 111C0 ; Diacritic # Mc SHARADA SIGN VIRAMA +111CA..111CC ; Diacritic # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA 11236 ; Diacritic # Mn KHOJKI SIGN NUKTA 112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA @@ -901,6 +911,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1163F ; Diacritic # Mn MODI SIGN VIRAMA 116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA 116B7 ; Diacritic # Mn TAKRI SIGN NUKTA +1172B ; Diacritic # Mn AHOM SIGN KILLER 16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 @@ -911,7 +922,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -# Total code points: 766 +# Total code points: 773 # ================================================ @@ -1053,7 +1064,7 @@ FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND # ================================================ 3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Unified_Ideograph # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Unified_Ideograph # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 @@ -1064,8 +1075,9 @@ FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..C 20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 -# Total code points: 74617 +# Total code points: 80388 # ================================================ @@ -1094,9 +1106,9 @@ E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] . 2329 ; Deprecated # Ps LEFT-POINTING ANGLE BRACKET 232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET E0001 ; Deprecated # Cf LANGUAGE TAG -E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG +E007F ; Deprecated # Cf CANCEL TAG -# Total code points: 111 +# Total code points: 16 # ================================================ @@ -1138,11 +1150,13 @@ E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG 0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI 0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI +19B5..19B7 ; Logical_Order_Exception # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O +19BA ; Logical_Order_Exception # Lo NEW TAI LUE VOWEL SIGN AY AAB5..AAB6 ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY -# Total code points: 15 +# Total code points: 19 # ================================================ @@ -1213,18 +1227,22 @@ FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP 11141..11143 ; STerm # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111CD ; STerm # Po SHARADA SUTRA MARK +111DE..111DF ; STerm # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 11238..11239 ; STerm # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA 1123B..1123C ; STerm # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK +112A9 ; STerm # Po MULTANI SECTION MARK 115C2..115C3 ; STerm # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA -115C9 ; STerm # Po SIDDHAM END OF TEXT MARK +115C9..115D7 ; STerm # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; STerm # Po [2] MODI DANDA..MODI DOUBLE DANDA +1173C..1173E ; STerm # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; STerm # Po BASSA VAH FULL STOP 16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB 16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS 1BC9F ; STerm # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1DA88 ; STerm # Po SIGNWRITING FULL STOP -# Total code points: 99 +# Total code points: 120 # ================================================ @@ -1432,7 +1450,9 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S 2BBD..2BC8 ; Pattern_Syntax # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BC9 ; Pattern_Syntax # Cn 2BCA..2BD1 ; Pattern_Syntax # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN -2BD2..2BFF ; Pattern_Syntax # Cn [46] .. +2BD2..2BEB ; Pattern_Syntax # Cn [26] .. +2BEC..2BEF ; Pattern_Syntax # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +2BF0..2BFF ; Pattern_Syntax # Cn [16] .. 2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET diff --git a/jdk/test/java/lang/Character/PropertyValueAliases.txt b/jdk/test/java/lang/Character/PropertyValueAliases.txt index bf1e2eb83c4..595744668b0 100644 --- a/jdk/test/java/lang/Character/PropertyValueAliases.txt +++ b/jdk/test/java/lang/Character/PropertyValueAliases.txt @@ -1,8 +1,8 @@ -# PropertyValueAliases-7.0.0.txt -# Date: 2014-05-14, 23:55:16 GMT [MD] +# PropertyValueAliases-8.0.0.txt +# Date: 2015-03-11, 22:29:33 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -77,6 +77,7 @@ age; 6.1 ; V6_1 age; 6.2 ; V6_2 age; 6.3 ; V6_3 age; 7.0 ; V7_0 +age; 8.0 ; V8_0 age; NA ; Unassigned # Alphabetic (Alpha) @@ -138,8 +139,10 @@ bpt; o ; Open # Block (blk) blk; Aegean_Numbers ; Aegean_Numbers +blk; Ahom ; Ahom blk; Alchemical ; Alchemical_Symbols blk; Alphabetic_PF ; Alphabetic_Presentation_Forms +blk; Anatolian_Hieroglyphs ; Anatolian_Hieroglyphs blk; Ancient_Greek_Music ; Ancient_Greek_Musical_Notation blk; Ancient_Greek_Numbers ; Ancient_Greek_Numbers blk; Ancient_Symbols ; Ancient_Symbols @@ -173,6 +176,7 @@ blk; Caucasian_Albanian ; Caucasian_Albanian blk; Chakma ; Chakma blk; Cham ; Cham blk; Cherokee ; Cherokee +blk; Cherokee_Sup ; Cherokee_Supplement blk; CJK ; CJK_Unified_Ideographs blk; CJK_Compat ; CJK_Compatibility blk; CJK_Compat_Forms ; CJK_Compatibility_Forms @@ -182,6 +186,7 @@ blk; CJK_Ext_A ; CJK_Unified_Ideographs_Extension_A blk; CJK_Ext_B ; CJK_Unified_Ideographs_Extension_B blk; CJK_Ext_C ; CJK_Unified_Ideographs_Extension_C blk; CJK_Ext_D ; CJK_Unified_Ideographs_Extension_D +blk; CJK_Ext_E ; CJK_Unified_Ideographs_Extension_E blk; CJK_Radicals_Sup ; CJK_Radicals_Supplement blk; CJK_Strokes ; CJK_Strokes blk; CJK_Symbols ; CJK_Symbols_And_Punctuation @@ -208,6 +213,7 @@ blk; Diacriticals_Sup ; Combining_Diacritical_Marks_Supplement blk; Dingbats ; Dingbats blk; Domino ; Domino_Tiles blk; Duployan ; Duployan +blk; Early_Dynastic_Cuneiform ; Early_Dynastic_Cuneiform blk; Egyptian_Hieroglyphs ; Egyptian_Hieroglyphs blk; Elbasan ; Elbasan blk; Emoticons ; Emoticons @@ -234,6 +240,7 @@ blk; Half_And_Full_Forms ; Halfwidth_And_Fullwidth_Forms blk; Half_Marks ; Combining_Half_Marks blk; Hangul ; Hangul_Syllables blk; Hanunoo ; Hanunoo +blk; Hatran ; Hatran blk; Hebrew ; Hebrew blk; High_PU_Surrogates ; High_Private_Use_Surrogates blk; High_Surrogates ; High_Surrogates @@ -303,6 +310,7 @@ blk; Modifier_Letters ; Spacing_Modifier_Letters blk; Modifier_Tone_Letters ; Modifier_Tone_Letters blk; Mongolian ; Mongolian blk; Mro ; Mro +blk; Multani ; Multani blk; Music ; Musical_Symbols blk; Myanmar ; Myanmar blk; Myanmar_Ext_A ; Myanmar_Extended_A @@ -315,6 +323,7 @@ blk; Number_Forms ; Number_Forms blk; OCR ; Optical_Character_Recognition blk; Ogham ; Ogham blk; Ol_Chiki ; Ol_Chiki +blk; Old_Hungarian ; Old_Hungarian blk; Old_Italic ; Old_Italic blk; Old_North_Arabian ; Old_North_Arabian blk; Old_Permic ; Old_Permic @@ -359,7 +368,9 @@ blk; Sup_Math_Operators ; Supplemental_Mathematical_Operators blk; Sup_PUA_A ; Supplementary_Private_Use_Area_A blk; Sup_PUA_B ; Supplementary_Private_Use_Area_B blk; Sup_Punctuation ; Supplemental_Punctuation +blk; Sup_Symbols_And_Pictographs ; Supplemental_Symbols_And_Pictographs blk; Super_And_Sub ; Superscripts_And_Subscripts +blk; Sutton_SignWriting ; Sutton_SignWriting blk; Syloti_Nagri ; Syloti_Nagri blk; Syriac ; Syriac blk; Tagalog ; Tagalog @@ -709,22 +720,22 @@ IDS; Y ; Yes ; T Ideo; N ; No ; F ; False Ideo; Y ; Yes ; T ; True -# Indic_Matra_Category (InMC) +# Indic_Positional_Category (InPC) -InMC; Bottom ; Bottom -InMC; Bottom_And_Right ; Bottom_And_Right -InMC; Left ; Left -InMC; Left_And_Right ; Left_And_Right -InMC; NA ; NA -InMC; Overstruck ; Overstruck -InMC; Right ; Right -InMC; Top ; Top -InMC; Top_And_Bottom ; Top_And_Bottom -InMC; Top_And_Bottom_And_Right ; Top_And_Bottom_And_Right -InMC; Top_And_Left ; Top_And_Left -InMC; Top_And_Left_And_Right ; Top_And_Left_And_Right -InMC; Top_And_Right ; Top_And_Right -InMC; Visual_Order_Left ; Visual_Order_Left +InPC; Bottom ; Bottom +InPC; Bottom_And_Right ; Bottom_And_Right +InPC; Left ; Left +InPC; Left_And_Right ; Left_And_Right +InPC; NA ; NA +InPC; Overstruck ; Overstruck +InPC; Right ; Right +InPC; Top ; Top +InPC; Top_And_Bottom ; Top_And_Bottom +InPC; Top_And_Bottom_And_Right ; Top_And_Bottom_And_Right +InPC; Top_And_Left ; Top_And_Left +InPC; Top_And_Left_And_Right ; Top_And_Left_And_Right +InPC; Top_And_Right ; Top_And_Right +InPC; Visual_Order_Left ; Visual_Order_Left # Indic_Syllabic_Category (InSC) @@ -736,11 +747,14 @@ InSC; Consonant ; Consonant InSC; Consonant_Dead ; Consonant_Dead InSC; Consonant_Final ; Consonant_Final InSC; Consonant_Head_Letter ; Consonant_Head_Letter +InSC; Consonant_Killer ; Consonant_Killer InSC; Consonant_Medial ; Consonant_Medial InSC; Consonant_Placeholder ; Consonant_Placeholder InSC; Consonant_Preceding_Repha ; Consonant_Preceding_Repha +InSC; Consonant_Prefixed ; Consonant_Prefixed InSC; Consonant_Subjoined ; Consonant_Subjoined InSC; Consonant_Succeeding_Repha ; Consonant_Succeeding_Repha +InSC; Consonant_With_Stacker ; Consonant_With_Stacker InSC; Gemination_Mark ; Gemination_Mark InSC; Invisible_Stacker ; Invisible_Stacker InSC; Joiner ; Joiner @@ -752,6 +766,7 @@ InSC; Number_Joiner ; Number_Joiner InSC; Other ; Other InSC; Pure_Killer ; Pure_Killer InSC; Register_Shifter ; Register_Shifter +InSC; Syllable_Modifier ; Syllable_Modifier InSC; Tone_Letter ; Tone_Letter InSC; Tone_Mark ; Tone_Mark InSC; Virama ; Virama @@ -1099,6 +1114,7 @@ STerm; Y ; Yes ; T # Script (sc) sc ; Aghb ; Caucasian_Albanian +sc ; Ahom ; Ahom sc ; Arab ; Arabic sc ; Armi ; Imperial_Aramaic sc ; Armn ; Armenian @@ -1137,10 +1153,13 @@ sc ; Guru ; Gurmukhi sc ; Hang ; Hangul sc ; Hani ; Han sc ; Hano ; Hanunoo +sc ; Hatr ; Hatran sc ; Hebr ; Hebrew sc ; Hira ; Hiragana +sc ; Hluw ; Anatolian_Hieroglyphs sc ; Hmng ; Pahawh_Hmong sc ; Hrkt ; Katakana_Or_Hiragana +sc ; Hung ; Old_Hungarian sc ; Ital ; Old_Italic sc ; Java ; Javanese sc ; Kali ; Kayah_Li @@ -1171,6 +1190,7 @@ sc ; Modi ; Modi sc ; Mong ; Mongolian sc ; Mroo ; Mro sc ; Mtei ; Meetei_Mayek +sc ; Mult ; Multani sc ; Mymr ; Myanmar sc ; Narb ; Old_North_Arabian sc ; Nbat ; Nabataean @@ -1194,6 +1214,7 @@ sc ; Runr ; Runic sc ; Samr ; Samaritan sc ; Sarb ; Old_South_Arabian sc ; Saur ; Saurashtra +sc ; Sgnw ; SignWriting sc ; Shaw ; Shavian sc ; Shrd ; Sharada sc ; Sidd ; Siddham diff --git a/jdk/test/java/lang/Character/Scripts.txt b/jdk/test/java/lang/Character/Scripts.txt index 0b69438a571..7e42740407c 100644 --- a/jdk/test/java/lang/Character/Scripts.txt +++ b/jdk/test/java/lang/Character/Scripts.txt @@ -1,10 +1,16 @@ -# Scripts-7.0.0.txt -# Date: 2014-05-15, 00:11:35 GMT [MD] +# Scripts-8.0.0.txt +# Date: 2015-03-11, 22:29:42 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ +# For more information, see: +# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/ +# Especially the sections: +# http://www.unicode.org/reports/tr24/#Assignment_Script_Values +# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values +# # ================================================ @@ -89,7 +95,6 @@ 061C ; Common # Cf ARABIC LETTER MARK 061F ; Common # Po ARABIC QUESTION MARK 0640 ; Common # Lm ARABIC TATWEEL -0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 06DD ; Common # Cf ARABIC END OF AYAH 0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT @@ -148,7 +153,7 @@ 208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20BD ; Common # Sc [30] EURO-CURRENCY SIGN..RUBLE SIGN +20A0..20BE ; Common # Sc [31] EURO-CURRENCY SIGN..LARI SIGN 2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2102 ; Common # L& DOUBLE-STRUCK CAPITAL C 2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA @@ -182,6 +187,7 @@ 214F ; Common # So SYMBOL FOR SAMARITAN SOURCE 2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2189 ; Common # No VULGAR FRACTION ZERO THIRDS +218A..218B ; Common # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE @@ -304,6 +310,7 @@ 2B98..2BB9 ; Common # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8 ; Common # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1 ; Common # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN +2BEC..2BEF ; Common # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET @@ -512,7 +519,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS +1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G @@ -571,16 +578,11 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT -1F300..1F32C ; Common # So [45] CYCLONE..WIND BLOWING FACE -1F330..1F37D ; Common # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE -1F380..1F3CE ; Common # So [79] RIBBON..RACING CAR -1F3D4..1F3F7 ; Common # So [36] SNOW CAPPED MOUNTAIN..LABEL -1F400..1F4FE ; Common # So [255] RAT..PORTABLE STEREO -1F500..1F54A ; Common # So [75] TWISTED RIGHTWARDS ARROWS..DOVE OF PEACE -1F550..1F579 ; Common # So [42] CLOCK FACE ONE OCLOCK..JOYSTICK +1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA +1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 +1F400..1F579 ; Common # So [378] RAT..JOYSTICK 1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX -1F5A5..1F642 ; Common # So [158] DESKTOP COMPUTER..SLIGHTLY SMILING FACE -1F645..1F6CF ; Common # So [139] FACE WITH NO GOOD GESTURE..BED +1F5A5..1F6D0 ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP 1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP 1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE @@ -590,10 +592,13 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS +1F910..1F918 ; Common # So [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS +1F980..1F984 ; Common # So [5] CRAB..UNICORN FACE +1F9C0 ; Common # So CHEESE WEDGE E0001 ; Common # Cf LANGUAGE TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 7129 +# Total code points: 7179 # ================================================ @@ -635,20 +640,21 @@ A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN A770 ; Latin # Lm MODIFIER LETTER US A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AD ; Latin # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1 ; Latin # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B7 ; Latin # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64 ; Latin # L& LATIN SMALL LETTER INVERTED ALPHA +AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z -# Total code points: 1338 +# Total code points: 1349 # ================================================ @@ -731,9 +737,10 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA A67F ; Cyrillic # Lm CYRILLIC PAYEROK A680..A69B ; Cyrillic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Cyrillic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A69F ; Cyrillic # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Cyrillic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E +FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF -# Total code points: 431 +# Total code points: 434 # ================================================ @@ -788,6 +795,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW +0660..0669 ; Arabic # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE @@ -806,8 +814,8 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V 0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE -08A0..08B2 ; Arabic # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE -08E4..08FF ; Arabic # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA +08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW +08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM @@ -854,7 +862,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA 1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -# Total code points: 1244 +# Total code points: 1257 # ================================================ @@ -902,8 +910,10 @@ A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE +A8FC ; Devanagari # Po DEVANAGARI SIGN SIDDHAM +A8FD ; Devanagari # Lo DEVANAGARI JAIN OM -# Total code points: 152 +# Total code points: 154 # ================================================ @@ -987,8 +997,9 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF0 ; Gujarati # Po GUJARATI ABBREVIATION SIGN 0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN +0AF9 ; Gujarati # Lo GUJARATI LETTER ZHA -# Total code points: 84 +# Total code points: 85 # ================================================ @@ -1064,14 +1075,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; Telugu # So TELUGU SIGN TUUMU -# Total code points: 95 +# Total code points: 96 # ================================================ @@ -1115,14 +1126,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA 0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH 0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61 ; Malayalam # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS 0D79 ; Malayalam # So MALAYALAM DATE MARK 0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K -# Total code points: 99 +# Total code points: 100 # ================================================ @@ -1358,9 +1369,11 @@ AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO # ================================================ -13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +13A0..13F5 ; Cherokee # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD ; Cherokee # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV +AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA -# Total code points: 85 +# Total code points: 172 # ================================================ @@ -1472,15 +1485,16 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Han # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Han # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 75963 +# Total code points: 81734 # ================================================ @@ -1680,9 +1694,7 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2 # ================================================ 1980..19AB ; New_Tai_Lue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA -19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 +19B0..19C9 ; New_Tai_Lue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE 19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV @@ -1770,11 +1782,12 @@ A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI # ================================================ -12000..12398 ; Cuneiform # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399 ; Cuneiform # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Cuneiform # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474 ; Cuneiform # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON +12480..12543 ; Cuneiform # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -# Total code points: 1037 +# Total code points: 1234 # ================================================ @@ -2151,9 +2164,12 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ 109A0..109B7 ; Meroitic_Cursive # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA +109BC..109BD ; Meroitic_Cursive # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109BE..109BF ; Meroitic_Cursive # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN +109C0..109CF ; Meroitic_Cursive # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY +109D2..109FF ; Meroitic_Cursive # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS -# Total code points: 26 +# Total code points: 90 # ================================================ @@ -2180,12 +2196,16 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 111B6..111BE ; Sharada # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; Sharada # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM -111C5..111C8 ; Sharada # Po [4] SHARADA DANDA..SHARADA SEPARATOR +111C5..111C9 ; Sharada # Po [5] SHARADA DANDA..SHARADA SANDHI MARK +111CA..111CC ; Sharada # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111CD ; Sharada # Po SHARADA SUTRA MARK 111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; Sharada # Lo SHARADA EKAM +111DB ; Sharada # Po SHARADA SIGN SIDDHAM +111DC ; Sharada # Lo SHARADA HEADSTROKE +111DD..111DF ; Sharada # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 -# Total code points: 85 +# Total code points: 94 # ================================================ @@ -2243,7 +2263,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ -11301 ; Grantha # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Grantha # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Grantha # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Grantha # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -2258,13 +2278,14 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11341..11344 ; Grantha # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Grantha # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; Grantha # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11350 ; Grantha # Lo GRANTHA OM 11357 ; Grantha # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; Grantha # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Grantha # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; Grantha # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Grantha # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -# Total code points: 83 +# Total code points: 85 # ================================================ @@ -2407,9 +2428,11 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 115BC..115BD ; Siddham # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Siddham # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; Siddham # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA -115C1..115C9 ; Siddham # Po [9] SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK +115C1..115D7 ; Siddham # Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES +115D8..115DB ; Siddham # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U +115DC..115DD ; Siddham # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU -# Total code points: 72 +# Total code points: 92 # ================================================ @@ -2448,4 +2471,69 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # Total code points: 84 +# ================================================ + +11700..11719 ; Ahom # Lo [26] AHOM LETTER KA..AHOM LETTER JHA +1171D..1171F ; Ahom # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Ahom # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Ahom # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Ahom # Mc AHOM VOWEL SIGN E +11727..1172B ; Ahom # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +11730..11739 ; Ahom # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY +1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +1173F ; Ahom # So AHOM SYMBOL VI + +# Total code points: 57 + +# ================================================ + +14400..14646 ; Anatolian_Hieroglyphs # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + +# Total code points: 583 + +# ================================================ + +108E0..108F2 ; Hatran # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; Hatran # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +108FB..108FF ; Hatran # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED + +# Total code points: 26 + +# ================================================ + +11280..11286 ; Multani # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; Multani # Lo MULTANI LETTER GHA +1128A..1128D ; Multani # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; Multani # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; Multani # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA +112A9 ; Multani # Po MULTANI SECTION MARK + +# Total code points: 38 + +# ================================================ + +10C80..10CB2 ; Old_Hungarian # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; Old_Hungarian # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10CFA..10CFF ; Old_Hungarian # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND + +# Total code points: 108 + +# ================================================ + +1D800..1D9FF ; SignWriting # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD +1DA00..1DA36 ; SignWriting # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA37..1DA3A ; SignWriting # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE +1DA3B..1DA6C ; SignWriting # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA6D..1DA74 ; SignWriting # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING +1DA75 ; SignWriting # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA76..1DA83 ; SignWriting # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH +1DA84 ; SignWriting # Mn SIGNWRITING LOCATION HEAD NECK +1DA85..1DA86 ; SignWriting # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS +1DA87..1DA8B ; SignWriting # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS +1DA9B..1DA9F ; SignWriting # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; SignWriting # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + +# Total code points: 672 + # EOF From 85378470d9d077f296041f8f9a0af5d5bcbb0517 Mon Sep 17 00:00:00 2001 From: Nadeesh TV Date: Tue, 20 Oct 2015 13:10:28 -0400 Subject: [PATCH 17/17] 8134928: java.time.Instant.truncatedTo(TemporalUnit unit) is truncating up if the year < 1970 Reviewed-by: rriggs, scolebourne --- jdk/src/java.base/share/classes/java/time/Instant.java | 2 +- jdk/test/java/time/tck/java/time/TCKInstant.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jdk/src/java.base/share/classes/java/time/Instant.java b/jdk/src/java.base/share/classes/java/time/Instant.java index 9b9efa582a7..f49c3b7a506 100644 --- a/jdk/src/java.base/share/classes/java/time/Instant.java +++ b/jdk/src/java.base/share/classes/java/time/Instant.java @@ -758,7 +758,7 @@ public final class Instant throw new UnsupportedTemporalTypeException("Unit must divide into a standard day without remainder"); } long nod = (seconds % LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + nanos; - long result = (nod / dur) * dur; + long result = Math.floorDiv(nod, dur) * dur ; return plusNanos(result - nod); } diff --git a/jdk/test/java/time/tck/java/time/TCKInstant.java b/jdk/test/java/time/tck/java/time/TCKInstant.java index 3fbead47173..4797f996785 100644 --- a/jdk/test/java/time/tck/java/time/TCKInstant.java +++ b/jdk/test/java/time/tck/java/time/TCKInstant.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 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 @@ -638,6 +638,12 @@ public class TCKInstant extends AbstractDateTimeTest { {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 0, 0)}, {Instant.ofEpochSecond(86400 + 7200 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 5400, 0)}, {Instant.ofEpochSecond(86400 + 10800 + 60 + 1, 123_456_789), NINETY_MINS, Instant.ofEpochSecond(86400 + 10800, 0)}, + + {Instant.ofEpochSecond(-86400 - 3600 - 60 - 1, 123_456_789), MINUTES, Instant.ofEpochSecond(-86400 - 3600 - 120, 0 )}, + {Instant.ofEpochSecond(-86400 - 3600 - 60 - 1, 123_456_789), MICROS, Instant.ofEpochSecond(-86400 - 3600 - 60 - 1, 123_456_000)}, + + {Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 0), SECONDS, Instant.ofEpochSecond(86400 + 3600 + 60 + 1, 0)}, + {Instant.ofEpochSecond(-86400 - 3600 - 120, 0), MINUTES, Instant.ofEpochSecond(-86400 - 3600 - 120, 0)}, }; } @Test(dataProvider="truncatedToValid")