changeset 7377:451301b279ed

RT-37536: [Accessibility] Put a11y code back
author Felipe Heidrich <felipe.heidrich@oracle.com>
date Mon, 23 Jun 2014 20:04:23 -0700
parents 31915f16ec3d
children c367a3e860f2
files modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxListViewSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxPopupControl.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuContent.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/LabeledSkinBase.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/MenuBarSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/PaginationSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollBarSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollPaneSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/SliderSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TabPaneSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableColumnHeader.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableRowSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextAreaSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextFieldSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ToolBarSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableRowSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableViewSkin.java modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java modules/controls/src/main/java/javafx/scene/control/Button.java modules/controls/src/main/java/javafx/scene/control/ButtonBase.java modules/controls/src/main/java/javafx/scene/control/CheckBox.java modules/controls/src/main/java/javafx/scene/control/ChoiceBox.java modules/controls/src/main/java/javafx/scene/control/ComboBox.java modules/controls/src/main/java/javafx/scene/control/ComboBoxBase.java modules/controls/src/main/java/javafx/scene/control/Control.java modules/controls/src/main/java/javafx/scene/control/DatePicker.java modules/controls/src/main/java/javafx/scene/control/Hyperlink.java modules/controls/src/main/java/javafx/scene/control/Label.java modules/controls/src/main/java/javafx/scene/control/Labeled.java modules/controls/src/main/java/javafx/scene/control/ListCell.java modules/controls/src/main/java/javafx/scene/control/ListView.java modules/controls/src/main/java/javafx/scene/control/MenuBar.java modules/controls/src/main/java/javafx/scene/control/MenuButton.java modules/controls/src/main/java/javafx/scene/control/Pagination.java modules/controls/src/main/java/javafx/scene/control/PasswordField.java modules/controls/src/main/java/javafx/scene/control/ProgressBar.java modules/controls/src/main/java/javafx/scene/control/ProgressIndicator.java modules/controls/src/main/java/javafx/scene/control/RadioButton.java modules/controls/src/main/java/javafx/scene/control/ScrollBar.java modules/controls/src/main/java/javafx/scene/control/ScrollPane.java modules/controls/src/main/java/javafx/scene/control/SkinBase.java modules/controls/src/main/java/javafx/scene/control/Slider.java modules/controls/src/main/java/javafx/scene/control/SplitMenuButton.java modules/controls/src/main/java/javafx/scene/control/TabPane.java modules/controls/src/main/java/javafx/scene/control/TableCell.java modules/controls/src/main/java/javafx/scene/control/TableRow.java modules/controls/src/main/java/javafx/scene/control/TableView.java modules/controls/src/main/java/javafx/scene/control/TextArea.java modules/controls/src/main/java/javafx/scene/control/TextField.java modules/controls/src/main/java/javafx/scene/control/TextInputControl.java modules/controls/src/main/java/javafx/scene/control/TitledPane.java modules/controls/src/main/java/javafx/scene/control/ToggleButton.java modules/controls/src/main/java/javafx/scene/control/ToolBar.java modules/controls/src/main/java/javafx/scene/control/Tooltip.java modules/controls/src/main/java/javafx/scene/control/TreeCell.java modules/controls/src/main/java/javafx/scene/control/TreeTableCell.java modules/controls/src/main/java/javafx/scene/control/TreeTableRow.java modules/controls/src/main/java/javafx/scene/control/TreeTableView.java modules/controls/src/main/java/javafx/scene/control/TreeView.java modules/graphics/src/main/java/com/sun/glass/ui/Application.java modules/graphics/src/main/java/com/sun/glass/ui/PlatformAccessible.java modules/graphics/src/main/java/com/sun/glass/ui/View.java modules/graphics/src/main/java/com/sun/glass/ui/mac/MacAccessible.java modules/graphics/src/main/java/com/sun/glass/ui/mac/MacApplication.java modules/graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java modules/graphics/src/main/java/com/sun/glass/ui/win/WinApplication.java modules/graphics/src/main/java/com/sun/glass/ui/win/WinTextRangeProvider.java modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Accessible.java modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Action.java modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Attribute.java modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Role.java modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/package.html modules/graphics/src/main/java/com/sun/javafx/tk/TKSceneListener.java modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassViewEventHandler.java modules/graphics/src/main/java/javafx/scene/Node.java modules/graphics/src/main/java/javafx/scene/Parent.java modules/graphics/src/main/java/javafx/scene/Scene.java modules/graphics/src/main/java/javafx/scene/accessibility/Accessible.java modules/graphics/src/main/java/javafx/scene/accessibility/Action.java modules/graphics/src/main/java/javafx/scene/accessibility/Attribute.java modules/graphics/src/main/java/javafx/scene/accessibility/Role.java modules/graphics/src/main/java/javafx/scene/accessibility/package.html modules/graphics/src/main/java/javafx/scene/image/ImageView.java modules/graphics/src/main/java/javafx/scene/text/Text.java modules/graphics/src/main/java/javafx/scene/text/TextFlow.java
diffstat 90 files changed, 3323 insertions(+), 3325 deletions(-) [+]
line wrap: on
line diff
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxListViewSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxListViewSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -41,7 +41,7 @@
 import javafx.event.EventTarget;
 import javafx.scene.Node;
 import javafx.scene.Parent;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.ComboBox;
 import javafx.scene.control.ComboBoxBase;
 import javafx.scene.control.ListCell;
@@ -653,7 +653,7 @@
             int index = listView.getSelectionModel().getSelectedIndex();
             comboBox.getSelectionModel().select(index);
             updateDisplayNode();
-//            comboBox.accSendNotification(Attribute.TITLE);
+            comboBox.accSendNotification(Attribute.TITLE);
         });
          
         comboBox.getSelectionModel().selectedItemProperty().addListener(o -> {
@@ -751,45 +751,45 @@
             setFocused(b);
         }
 
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case FOCUS_ITEM: 
-//                    /* Internally comboBox reassign its focus the text field.
-//                     * For the accessibility perspective it is more meaningful
-//                     * if the focus stays with the comboBox control.
-//                     */
-//                    return getParent();
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case FOCUS_ITEM: 
+                    /* Internally comboBox reassign its focus the text field.
+                     * For the accessibility perspective it is more meaningful
+                     * if the focus stays with the comboBox control.
+                     */
+                    return getParent();
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
     }
 
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_ITEM: {
-//                if (comboBox.isShowing()) {
-//                    /* On Mac, for some reason, changing the selection on the list is not
-//                     * reported by VoiceOver the first time it shows.
-//                     * Note that this fix returns a child of the PopupWindow back to the main
-//                     * Stage, which doesn't seem to cause problems.
-//                     */
-//                    return listView.accGetAttribute(attribute, parameters);
-//                }
-//                return null;
-//            }
-//            case TITLE: {
-//                String title = comboBox.isEditable() ? textField.getText() : buttonCell.getText();
-//                if (title == null || title.isEmpty()) {
-//                    title = comboBox.getPromptText();
-//                }
-//                return title;
-//            }
-//            case SELECTION_START: return textField.getSelection().getStart();
-//            case SELECTION_END: return textField.getSelection().getEnd();
-//
-//            //fall through
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_ITEM: {
+                if (comboBox.isShowing()) {
+                    /* On Mac, for some reason, changing the selection on the list is not
+                     * reported by VoiceOver the first time it shows.
+                     * Note that this fix returns a child of the PopupWindow back to the main
+                     * Stage, which doesn't seem to cause problems.
+                     */
+                    return listView.accGetAttribute(attribute, parameters);
+                }
+                return null;
+            }
+            case TITLE: {
+                String title = comboBox.isEditable() ? textField.getText() : buttonCell.getText();
+                if (title == null || title.isEmpty()) {
+                    title = comboBox.getPromptText();
+                }
+                return title;
+            }
+            case SELECTION_START: return textField.getSelection().getStart();
+            case SELECTION_END: return textField.getSelection().getEnd();
+
+            //fall through
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
 
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxPopupControl.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ComboBoxPopupControl.java	Mon Jun 23 20:04:23 2014 -0700
@@ -28,7 +28,7 @@
 import javafx.beans.value.ObservableValue;
 import javafx.css.Styleable;
 import javafx.geometry.*;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.*;
 import com.sun.javafx.scene.control.behavior.ComboBoxBaseBehavior;
 import javafx.beans.InvalidationListener;
@@ -140,7 +140,7 @@
         popup.addEventHandler(WindowEvent.WINDOW_HIDDEN, t -> {
             // Make sure the accessibility focus returns to the combo box
             // after the window closes.
-//            getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
+            getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
         });
         
         // Fix for RT-21207
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuContent.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuContent.java	Mon Jun 23 20:04:23 2014 -0700
@@ -45,9 +45,9 @@
 import javafx.geometry.*;
 import javafx.scene.Node;
 import javafx.scene.Parent;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.*;
 import javafx.scene.input.KeyEvent;
 import javafx.scene.input.MouseEvent;
@@ -974,15 +974,15 @@
             }
         }
 
-//        @Override
-//        public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.CONTEXT_MENU;
-//                case VISIBLE: return contextMenu.isShowing();
-//                case MENU_FOR: return contextMenu.getOwnerNode();
-//                default: return super.accGetAttribute(attribute, parameters); 
-//            }
-//        }
+        @Override
+        public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.CONTEXT_MENU;
+                case VISIBLE: return contextMenu.isShowing();
+                case MENU_FOR: return contextMenu.getOwnerNode();
+                default: return super.accGetAttribute(attribute, parameters); 
+            }
+        }
     }
 
     class ArrowMenuItem extends StackPane {
@@ -1469,82 +1469,82 @@
             return null;
         }
 
-//        @Override
-//        public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.MENU_ITEM;
-//                case MENU_ITEM_TYPE:
-//                    if (item instanceof RadioMenuItem) return Role.RADIO_BUTTON;
-//                    if (item instanceof CheckMenuItem) return Role.CHECKBOX;
-//                    if (item instanceof Menu) return Role.CONTEXT_MENU;
-//                    return Role.MENU_ITEM;
-//                case SELECTED:
-//                    if (item instanceof CheckMenuItem) {
-//                        return ((CheckMenuItem)item).isSelected();
-//                    }
-//                    if (item instanceof RadioMenuItem) {
-//                        return ((RadioMenuItem) item).isSelected();
-//                    }
-//                    return false;
-//                case ACCELERATOR: return item.getAccelerator();
-//                case TITLE: {
-//                    String title = "";
-//                    if (graphic != null) {
-//                        String t = (String)graphic.accGetAttribute(Attribute.TITLE);
-//                        if (t != null) title += t;
-//                    }                  
-//                    final Label label = getLabel();
-//                    if (label != null) {
-//                        String t = (String)label.accGetAttribute(Attribute.TITLE);
-//                        if (t != null) title += t;
-//                    }
-//                    if (item instanceof CustomMenuItem) {
-//                        Node content = ((CustomMenuItem) item).getContent();
-//                        if (content != null) {
-//                            String t = (String)content.accGetAttribute(Attribute.TITLE);
-//                            if (t != null) title += t;
-//                        }
-//                    }
-//                    return title;
-//                }
-//                case MNEMONIC: {
-//                    final Label label = getLabel();
-//                    if (label != null) {
-//                        String mnemonic = (String)label.accGetAttribute(Attribute.MNEMONIC);
-//                        if (mnemonic != null) return mnemonic;
-//                    }
-//                    return null;
-//                }
-//                case ENABLED: return !item.isDisable();
-//                case MENU:
-//                    createSubmenu();
-//                    // Accessibility might need to see the menu node before the window
-//                    // is visible (i.e. before the skin is applied).
-//                    if (submenu.getSkin() == null) {
-//                        submenu.impl_styleableGetNode().impl_processCSS(true);
-//                    }
-//                    ContextMenuContent cmContent = (ContextMenuContent)submenu.getSkin().getNode();
-//                    return cmContent.itemsContainer;
-//                default: return super.accGetAttribute(attribute, parameters); 
-//            }
-//        }
-//
-//        @Override
-//        public void accExecuteAction(Action action, Object... parameters) {
-//            switch (action) {
-//                case SHOW_MENU:{
-//                    if (item instanceof Menu) {
-//                        final Menu menuItem = (Menu) item;
-//                        menuItem.hide();
-//                    }
-//                    break;
-//                }
-//                case FIRE: 
-//                    doSelect();
-//                    break;
-//                default: super.accExecuteAction(action);
-//            }
-//        }
+        @Override
+        public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.MENU_ITEM;
+                case MENU_ITEM_TYPE:
+                    if (item instanceof RadioMenuItem) return Role.RADIO_BUTTON;
+                    if (item instanceof CheckMenuItem) return Role.CHECKBOX;
+                    if (item instanceof Menu) return Role.CONTEXT_MENU;
+                    return Role.MENU_ITEM;
+                case SELECTED:
+                    if (item instanceof CheckMenuItem) {
+                        return ((CheckMenuItem)item).isSelected();
+                    }
+                    if (item instanceof RadioMenuItem) {
+                        return ((RadioMenuItem) item).isSelected();
+                    }
+                    return false;
+                case ACCELERATOR: return item.getAccelerator();
+                case TITLE: {
+                    String title = "";
+                    if (graphic != null) {
+                        String t = (String)graphic.accGetAttribute(Attribute.TITLE);
+                        if (t != null) title += t;
+                    }                  
+                    final Label label = getLabel();
+                    if (label != null) {
+                        String t = (String)label.accGetAttribute(Attribute.TITLE);
+                        if (t != null) title += t;
+                    }
+                    if (item instanceof CustomMenuItem) {
+                        Node content = ((CustomMenuItem) item).getContent();
+                        if (content != null) {
+                            String t = (String)content.accGetAttribute(Attribute.TITLE);
+                            if (t != null) title += t;
+                        }
+                    }
+                    return title;
+                }
+                case MNEMONIC: {
+                    final Label label = getLabel();
+                    if (label != null) {
+                        String mnemonic = (String)label.accGetAttribute(Attribute.MNEMONIC);
+                        if (mnemonic != null) return mnemonic;
+                    }
+                    return null;
+                }
+                case ENABLED: return !item.isDisable();
+                case MENU:
+                    createSubmenu();
+                    // Accessibility might need to see the menu node before the window
+                    // is visible (i.e. before the skin is applied).
+                    if (submenu.getSkin() == null) {
+                        submenu.impl_styleableGetNode().impl_processCSS(true);
+                    }
+                    ContextMenuContent cmContent = (ContextMenuContent)submenu.getSkin().getNode();
+                    return cmContent.itemsContainer;
+                default: return super.accGetAttribute(attribute, parameters); 
+            }
+        }
+
+        @Override
+        public void accExecuteAction(Action action, Object... parameters) {
+            switch (action) {
+                case SHOW_MENU:{
+                    if (item instanceof Menu) {
+                        final Menu menuItem = (Menu) item;
+                        menuItem.hide();
+                    }
+                    break;
+                }
+                case FIRE: 
+                    doSelect();
+                    break;
+                default: super.accExecuteAction(action);
+            }
+        }
     }
 
 
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ContextMenuSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -28,7 +28,7 @@
 import javafx.event.Event;
 import javafx.event.EventHandler;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.ContextMenu;
 import javafx.scene.control.Menu;
 import javafx.scene.control.Skin;
@@ -86,7 +86,7 @@
                     cmContent.requestFocus();
                     if (cmContent instanceof ContextMenuContent) {
                         Node accMenu = ((ContextMenuContent)cmContent).getItemsContainer();
-//                        accMenu.accSendNotification(Attribute.VISIBLE);
+                        accMenu.accSendNotification(Attribute.VISIBLE);
                     }
                 }
                 
@@ -110,7 +110,7 @@
                 Node cmContent = popupMenu.getSkin().getNode();
                 if (cmContent instanceof ContextMenuContent) {
                     Node accMenu = ((ContextMenuContent)cmContent).getItemsContainer();
-//                    accMenu.accSendNotification(Attribute.VISIBLE);
+                    accMenu.accSendNotification(Attribute.VISIBLE);
                 }
             }
         });
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/LabeledSkinBase.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/LabeledSkinBase.java	Mon Jun 23 20:04:23 2014 -0700
@@ -34,7 +34,7 @@
 import javafx.geometry.VPos;
 import javafx.scene.Node;
 import javafx.scene.Scene;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.ContentDisplay;
 import javafx.scene.control.Control;
 import javafx.scene.control.Label;
@@ -1112,23 +1112,23 @@
         }
     }
 
-//    /** @treatAsPrivate */
-//    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case TITLE: {
-//                if (bindings != null) {
-//                    return bindings.getText();
-//                }
-//                final Labeled labeled = getSkinnable();
-//                return labeled != null ? labeled.getText() : null;
-//            }
-//            case MNEMONIC: {
-//                if (bindings != null) {
-//                    return bindings.getMnemonic();
-//                }
-//                return null;
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case TITLE: {
+                if (bindings != null) {
+                    return bindings.getText();
+                }
+                final Labeled labeled = getSkinnable();
+                return labeled != null ? labeled.getText() : null;
+            }
+            case MNEMONIC: {
+                if (bindings != null) {
+                    return bindings.getMnemonic();
+                }
+                return null;
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ListViewSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -34,8 +34,8 @@
 import javafx.event.EventHandler;
 import javafx.geometry.Orientation;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.FocusModel;
 import javafx.scene.control.IndexedCell;
 import javafx.scene.control.Label;
@@ -484,57 +484,57 @@
         return newSelectionIndex;
     }
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_ITEM: {
-//                FocusModel<?> fm = getSkinnable().getFocusModel();
-//                int focusedIndex = fm.getFocusedIndex();
-//                if (focusedIndex == -1) {
-//                    if (placeholderRegion != null && placeholderRegion.isVisible()) {
-//                        return placeholderRegion.getChildren().get(0);
-//                    }
-//                    if (getItemCount() > 0) {
-//                        focusedIndex = 0;
-//                    } else {
-//                        return null;
-//                    }
-//                }
-//                return flow.getPrivateCell(focusedIndex);
-//            }
-//            case ROW_AT_INDEX: {
-//                Integer rowIndex = (Integer)parameters[0];
-//                if (rowIndex == null) return null;
-//                if (0 <= rowIndex && rowIndex < getItemCount()) {
-//                    return flow.getPrivateCell(rowIndex);
-//                }
-//                return null;
-//            }
-//            case SELECTED_ROWS: {
-//                MultipleSelectionModel<T> sm = getSkinnable().getSelectionModel();
-//                ObservableList<Integer> indices = sm.getSelectedIndices();
-//                List<Node> selection = new ArrayList<>(indices.size());
-//                for (int i : indices) {
-//                    ListCell<T> row = flow.getPrivateCell(i);
-//                    if (row != null) selection.add(row);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//            case VERTICAL_SCROLLBAR: return flow.getVbar();
-//            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    @Override
-//    public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SCROLL_TO_INDEX: {
-//                Integer index = (Integer)parameters[0];
-//                if (index != null) flow.show(index);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_ITEM: {
+                FocusModel<?> fm = getSkinnable().getFocusModel();
+                int focusedIndex = fm.getFocusedIndex();
+                if (focusedIndex == -1) {
+                    if (placeholderRegion != null && placeholderRegion.isVisible()) {
+                        return placeholderRegion.getChildren().get(0);
+                    }
+                    if (getItemCount() > 0) {
+                        focusedIndex = 0;
+                    } else {
+                        return null;
+                    }
+                }
+                return flow.getPrivateCell(focusedIndex);
+            }
+            case ROW_AT_INDEX: {
+                Integer rowIndex = (Integer)parameters[0];
+                if (rowIndex == null) return null;
+                if (0 <= rowIndex && rowIndex < getItemCount()) {
+                    return flow.getPrivateCell(rowIndex);
+                }
+                return null;
+            }
+            case SELECTED_ROWS: {
+                MultipleSelectionModel<T> sm = getSkinnable().getSelectionModel();
+                ObservableList<Integer> indices = sm.getSelectedIndices();
+                List<Node> selection = new ArrayList<>(indices.size());
+                for (int i : indices) {
+                    ListCell<T> row = flow.getPrivateCell(i);
+                    if (row != null) selection.add(row);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+            case VERTICAL_SCROLLBAR: return flow.getVbar();
+            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    @Override
+    public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SCROLL_TO_INDEX: {
+                Integer index = (Integer)parameters[0];
+                if (index != null) flow.show(index);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/MenuBarSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/MenuBarSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -40,8 +40,8 @@
 import javafx.geometry.NodeOrientation;
 import javafx.scene.Node;
 import javafx.scene.Scene;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.CustomMenuItem;
 import javafx.scene.control.Menu;
 import javafx.scene.control.MenuBar;
@@ -870,7 +870,7 @@
             SceneHelper.getSceneAccessor().setTransientFocusContainer(getSkinnable().getScene(), null);
 
             /* Return the a11y focus to a control in the scene. */
-//            getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
+            getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
         }
         focusedMenuIndex = -1;
     }
@@ -988,19 +988,19 @@
             setHover(true);
 
             /* Transfer the a11y focus to an item in the menu bar. */
-//            menuBarSkin.getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
+            menuBarSkin.getSkinnable().accSendNotification(Attribute.FOCUS_NODE);
         }
 
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.MENU_ITEM;
-//                case MENU_ITEM_TYPE: return Role.CONTEXT_MENU;
-//                case FOCUS_ITEM: return MenuBarButton.this;
-//                case TITLE: //fall through because the super class handles mnemonics right
-//                case MNEMONIC:
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.MENU_ITEM;
+                case MENU_ITEM_TYPE: return Role.CONTEXT_MENU;
+                case FOCUS_ITEM: return MenuBarButton.this;
+                case TITLE: //fall through because the super class handles mnemonics right
+                case MNEMONIC:
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
     }
 
     /***************************************************************************
@@ -1064,11 +1064,11 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_NODE: return openMenuButton;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_NODE: return openMenuButton;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/PaginationSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/PaginationSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -56,9 +56,9 @@
 import javafx.geometry.Side;
 import javafx.geometry.VPos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.*;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.input.TouchEvent;
@@ -700,15 +700,15 @@
         layoutInArea(navigation, x, stackPaneHeight, w, navigationHeight, 0, HPos.CENTER, VPos.CENTER);
     }
 
-//    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            // Role: Pagination (specified in Pagination class)
-//            case FOCUS_ITEM: return navigation.indicatorButtons.getSelectedToggle();
-//            case SELECTED_PAGE: return navigation.indicatorButtons.getSelectedToggle();
-//            case PAGES: return navigation.indicatorButtons.getToggles();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            // Role: Pagination (specified in Pagination class)
+            case FOCUS_ITEM: return navigation.indicatorButtons.getSelectedToggle();
+            case SELECTED_PAGE: return navigation.indicatorButtons.getSelectedToggle();
+            case PAGES: return navigation.indicatorButtons.getToggles();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
     class NavigationControl extends StackPane {
 
@@ -735,12 +735,12 @@
             controlBox.getStyleClass().add("control-box");
 
             leftArrowButton = new Button() {
-//                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case TITLE: return getString("Accessibility.title.Pagination.PreviousButton");
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
+                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case TITLE: return getString("Accessibility.title.Pagination.PreviousButton");
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
             };
             minButtonSize = leftArrowButton.getFont().getSize() * 2;
             leftArrowButton.fontProperty().addListener((arg0, arg1, newFont) -> {
@@ -763,12 +763,12 @@
             leftArrow.getStyleClass().add("left-arrow");
 
             rightArrowButton = new Button() {
-//                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case TITLE: return getString("Accessibility.title.Pagination.NextButton");
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
+                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case TITLE: return getString("Accessibility.title.Pagination.NextButton");
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
             };
             rightArrowButton.setMinSize(minButtonSize, minButtonSize);
             rightArrowButton.prefWidthProperty().bind(rightArrowButton.minWidthProperty());
@@ -854,7 +854,7 @@
                     break;
                 }
             }
-//            getSkinnable().accSendNotification(Attribute.SELECTED_PAGE);
+            getSkinnable().accSendNotification(Attribute.SELECTED_PAGE);
         }
 
         // Update the page index using the currentIndex and updates the page set
@@ -1250,21 +1250,21 @@
             }
         }
 
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.PAGE;
-//                case TITLE: return getText();
-//                case SELECTED: return isSelected();
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
-//
-//        @Override public void accExecuteAction(Action action, Object... parameters) {
-//            switch (action) {
-//                case SELECT: setSelected(true); break;
-//                default: super.accExecuteAction(action);
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.PAGE;
+                case TITLE: return getText();
+                case SELECTED: return isSelected();
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
+
+        @Override public void accExecuteAction(Action action, Object... parameters) {
+            switch (action) {
+                case SELECT: setSelected(true); break;
+                default: super.accExecuteAction(action);
+            }
+        }
     }
 
     /***************************************************************************
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollBarSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollBarSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -27,9 +27,9 @@
 
 import javafx.geometry.Orientation;
 import javafx.geometry.Point2D;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.ScrollBar;
 import javafx.scene.input.MouseButton;
 import javafx.scene.input.ScrollEvent;
@@ -94,33 +94,33 @@
         trackBackground.getStyleClass().setAll("track-background");
 
         thumb = new StackPane() {
-//            @Override
-//            public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                switch (attribute) {
-//                    case ROLE: return Role.THUMB;
-//                    case VALUE: return getSkinnable().getValue();
-//                    case MAX_VALUE: {
-//                        // This is required for mac-support, to convert from pixel to percent
-//                        return getSkinnable().getMax();
-//                    }
-//                    default: return super.accGetAttribute(attribute, parameters);
-//                }
-//            }
-//
-//            @Override
-//            public void accExecuteAction(Action action, Object... parameters) {
-//                switch (action) {
-//                    case MOVE: {
-//                        // FIXME for now we just take the x/y values as value, rather than pixel value
-//                        final ScrollBar scrollBar = getSkinnable();
-//                        final Orientation o = scrollBar.getOrientation();
-//                        double value = (double) (o == Orientation.VERTICAL ? parameters[1] : parameters[0]);
-//                        scrollBar.setValue(scrollBar.getValue() + value);
-//                        break;
-//                    }
-//                    default: super.accExecuteAction(action, parameters);
-//                }
-//            }
+            @Override
+            public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                switch (attribute) {
+                    case ROLE: return Role.THUMB;
+                    case VALUE: return getSkinnable().getValue();
+                    case MAX_VALUE: {
+                        // This is required for mac-support, to convert from pixel to percent
+                        return getSkinnable().getMax();
+                    }
+                    default: return super.accGetAttribute(attribute, parameters);
+                }
+            }
+
+            @Override
+            public void accExecuteAction(Action action, Object... parameters) {
+                switch (action) {
+                    case MOVE: {
+                        // FIXME for now we just take the x/y values as value, rather than pixel value
+                        final ScrollBar scrollBar = getSkinnable();
+                        final Orientation o = scrollBar.getOrientation();
+                        double value = (double) (o == Orientation.VERTICAL ? parameters[1] : parameters[0]);
+                        scrollBar.setValue(scrollBar.getValue() + value);
+                        break;
+                    }
+                    default: super.accExecuteAction(action, parameters);
+                }
+            }
         };
         thumb.getStyleClass().setAll("thumb");
 
@@ -128,23 +128,23 @@
         if (!IS_TOUCH_SUPPORTED) {
             
             incButton = new EndButton("increment-button", "increment-arrow") {
-//                @Override
-//                public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case ROLE: return Role.INCREMENT_BUTTON;
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
-//
-//                @Override
-//                public void accExecuteAction(Action action, Object... parameters) {
-//                    switch (action) {
-//                        case FIRE: 
-//                            getSkinnable().increment();
-//                            break;
-//                        default: super.accExecuteAction(action, parameters);
-//                    }
-//                }
+                @Override
+                public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case ROLE: return Role.INCREMENT_BUTTON;
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
+
+                @Override
+                public void accExecuteAction(Action action, Object... parameters) {
+                    switch (action) {
+                        case FIRE: 
+                            getSkinnable().increment();
+                            break;
+                        default: super.accExecuteAction(action, parameters);
+                    }
+                }
             };
             incButton.setOnMousePressed(me -> {
                 /*
@@ -166,23 +166,23 @@
             });
 
             decButton = new EndButton("decrement-button", "decrement-arrow") {
-//                @Override
-//                public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case ROLE: return Role.DECREMENT_BUTTON;
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
-//
-//                @Override
-//                public void accExecuteAction(Action action, Object... parameters) {
-//                    switch (action) {
-//                        case FIRE:
-//                            getSkinnable().decrement();
-//                            break;
-//                        default: super.accExecuteAction(action, parameters);
-//                    }
-//                }
+                @Override
+                public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case ROLE: return Role.DECREMENT_BUTTON;
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
+
+                @Override
+                public void accExecuteAction(Action action, Object... parameters) {
+                    switch (action) {
+                        case FIRE:
+                            getSkinnable().decrement();
+                            break;
+                        default: super.accExecuteAction(action, parameters);
+                    }
+                }
             };
             decButton.setOnMousePressed(me -> {
                 /*
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollPaneSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ScrollPaneSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -43,7 +43,7 @@
 import javafx.geometry.Orientation;
 import javafx.scene.Cursor;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.ScrollBar;
 import javafx.scene.control.ScrollPane;
 import javafx.scene.control.ScrollPane.ScrollBarPolicy;
@@ -1190,11 +1190,11 @@
         return contentPosY;
     }
 
-//    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case VERTICAL_SCROLLBAR: return vsb;
-//            case HORIZONTAL_SCROLLBAR: return hsb;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case VERTICAL_SCROLLBAR: return vsb;
+            case HORIZONTAL_SCROLLBAR: return hsb;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/SliderSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/SliderSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -29,9 +29,9 @@
 import javafx.geometry.Orientation;
 import javafx.geometry.Point2D;
 import javafx.geometry.Side;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.chart.NumberAxis;
 import javafx.scene.control.Slider;
 import javafx.scene.layout.StackPane;
@@ -84,33 +84,33 @@
 
     private void initialize() {
         thumb = new StackPane() {
-//            @Override
-//            public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                switch (attribute) {
-//                    case ROLE: return Role.THUMB;
-//                    case VALUE: return getSkinnable().getValue();
-//                    case MAX_VALUE: {
-//                        // This is required for mac-support, to convert from pixel to percent
-//                        return getSkinnable().getMax();
-//                    }
-//                    default: return super.accGetAttribute(attribute, parameters);
-//                }
-//            }
-//
-//            @Override
-//            public void accExecuteAction(Action action, Object... parameters) {
-//                switch (action) {
-//                    case MOVE: {
-//                        // FIXME for now we just take the x/y values as value, rather than pixel value
-//                        final Slider slider = getSkinnable();
-//                        final Orientation o = slider.getOrientation();
-//                        double value = (double) (o == Orientation.VERTICAL ? parameters[1] : parameters[0]);
-//                        slider.setValue(slider.getValue() + value);
-//                        break;
-//                    }
-//                    default: super.accExecuteAction(action, parameters);
-//                }
-//            }
+            @Override
+            public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                switch (attribute) {
+                    case ROLE: return Role.THUMB;
+                    case VALUE: return getSkinnable().getValue();
+                    case MAX_VALUE: {
+                        // This is required for mac-support, to convert from pixel to percent
+                        return getSkinnable().getMax();
+                    }
+                    default: return super.accGetAttribute(attribute, parameters);
+                }
+            }
+
+            @Override
+            public void accExecuteAction(Action action, Object... parameters) {
+                switch (action) {
+                    case MOVE: {
+                        // FIXME for now we just take the x/y values as value, rather than pixel value
+                        final Slider slider = getSkinnable();
+                        final Orientation o = slider.getOrientation();
+                        double value = (double) (o == Orientation.VERTICAL ? parameters[1] : parameters[0]);
+                        slider.setValue(slider.getValue() + value);
+                        break;
+                    }
+                    default: super.accExecuteAction(action, parameters);
+                }
+            }
         };
         thumb.getStyleClass().setAll("thumb");
         track = new StackPane();
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TabPaneSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TabPaneSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -54,8 +54,8 @@
 import javafx.geometry.Side;
 import javafx.geometry.VPos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.ContextMenu;
 import javafx.scene.control.Label;
 import javafx.scene.control.MenuItem;
@@ -1127,13 +1127,13 @@
                 @Override protected double computePrefHeight(double w) {
                     return CLOSE_BTN_SIZE;
                 }
-//                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case ROLE: return Role.BUTTON;
-//                        case TITLE: return getString("Accessibility.title.TabPane.CloseButton");
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
+                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case ROLE: return Role.BUTTON;
+                        case TITLE: return getString("Accessibility.title.TabPane.CloseButton");
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
             };
             closeBtn.getStyleClass().setAll("tab-close-button");
             closeBtn.setOnMousePressed(new EventHandler<MouseEvent>() {
@@ -1466,14 +1466,14 @@
             clip.setHeight(value);
         }
     
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.TAB_ITEM;
-//                case TITLE: return getTab().getText();
-//                case SELECTED: return selectedTab == getTab();
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.TAB_ITEM;
+                case TITLE: return getTab().getText();
+                case SELECTED: return selectedTab == getTab();
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
     } /* End TabHeaderSkin */
 
     private static final PseudoClass SELECTED_PSEUDOCLASS_STATE =
@@ -1772,13 +1772,13 @@
         }
     }
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_ITEM: return tabHeaderArea.getTabHeaderSkin(selectedTab);
-//            case SELECTED_TAB: return tabHeaderArea.getTabHeaderSkin(selectedTab);
-//            case TABS: return tabHeaderArea.headersRegion.getChildren();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_ITEM: return tabHeaderArea.getTabHeaderSkin(selectedTab);
+            case SELECTED_TAB: return tabHeaderArea.getTabHeaderSkin(selectedTab);
+            case TABS: return tabHeaderArea.headersRegion.getChildren();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableColumnHeader.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableColumnHeader.java	Mon Jun 23 20:04:23 2014 -0700
@@ -41,8 +41,8 @@
 import javafx.geometry.Pos;
 import javafx.geometry.VPos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.ContextMenu;
 import javafx.scene.control.Label;
 import javafx.scene.control.TableColumn;
@@ -1024,15 +1024,15 @@
         return getClassCssMetaData();
     }
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            /* Having TableColumn role parented by TableColumn causes VoiceOver to be unhappy */
-//            case ROLE: return column != null ? Role.TABLE_COLUMN : super.accGetAttribute(attribute, parameters);
-//            case INDEX: return getIndex(column);
-//            case TITLE: return column != null ? column.getText() : null;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            /* Having TableColumn role parented by TableColumn causes VoiceOver to be unhappy */
+            case ROLE: return column != null ? Role.TABLE_COLUMN : super.accGetAttribute(attribute, parameters);
+            case INDEX: return getIndex(column);
+            case TITLE: return column != null ? column.getText() : null;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableRowSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableRowSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -30,7 +30,7 @@
 import java.util.List;
 
 import javafx.beans.property.DoubleProperty;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
 import javafx.scene.control.TablePosition;
@@ -129,45 +129,45 @@
         }
     }
 
-//    @Override
-//    protected Object accGetAttribute(Attribute attribute,
-//                                     Object... parameters) {
-//        switch (attribute) {
-//            case SELECTED_CELLS: {
-//                // FIXME this could be optimised to iterate over cellsMap only
-//                // (selectedCells could be big, cellsMap is much smaller)
-//                List<Node> selection = new ArrayList<>();
-//                int index = getSkinnable().getIndex();
-//                for (TablePosition pos : tableView.getSelectionModel().getSelectedCells()) {
-//                    if (pos.getRow() == index) {
-//                        TableColumn column = pos.getTableColumn();
-//                        if (column == null) {
-//                            /* This is the row-based case */
-//                            column = tableView.getVisibleLeafColumn(0);
-//                        }
-//                        TableCell cell = cellsMap.get(column);
-//                        if (cell != null) selection.add(cell);
-//                    }
-//                    return FXCollections.observableArrayList(selection);
-//                }
-//            }
-//            case CELL_AT_ROW_COLUMN: {
-//                int colIndex = (Integer)parameters[1];
-//                TableColumn column = tableView.getVisibleLeafColumn(colIndex);
-//                return cellsMap.get(column);
-//            }
-//            case FOCUS_ITEM: {
-//                TableViewFocusModel<T> fm = tableView.getFocusModel();
-//                TablePosition focusedCell = fm.getFocusedCell();
-//                TableColumn column = focusedCell.getTableColumn();
-//                if (column == null) {
-//                    /* This is the row-based case */
-//                    column = tableView.getVisibleLeafColumn(0);
-//                }
-//                return cellsMap.get(column);
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    protected Object accGetAttribute(Attribute attribute,
+                                     Object... parameters) {
+        switch (attribute) {
+            case SELECTED_CELLS: {
+                // FIXME this could be optimised to iterate over cellsMap only
+                // (selectedCells could be big, cellsMap is much smaller)
+                List<Node> selection = new ArrayList<>();
+                int index = getSkinnable().getIndex();
+                for (TablePosition pos : tableView.getSelectionModel().getSelectedCells()) {
+                    if (pos.getRow() == index) {
+                        TableColumn column = pos.getTableColumn();
+                        if (column == null) {
+                            /* This is the row-based case */
+                            column = tableView.getVisibleLeafColumn(0);
+                        }
+                        TableCell cell = cellsMap.get(column);
+                        if (cell != null) selection.add(cell);
+                    }
+                    return FXCollections.observableArrayList(selection);
+                }
+            }
+            case CELL_AT_ROW_COLUMN: {
+                int colIndex = (Integer)parameters[1];
+                TableColumn column = tableView.getVisibleLeafColumn(colIndex);
+                return cellsMap.get(column);
+            }
+            case FOCUS_ITEM: {
+                TableViewFocusModel<T> fm = tableView.getFocusModel();
+                TablePosition focusedCell = fm.getFocusedCell();
+                TableColumn column = focusedCell.getTableColumn();
+                if (column == null) {
+                    /* This is the row-based case */
+                    column = tableView.getVisibleLeafColumn(0);
+                }
+                return cellsMap.get(column);
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -34,7 +34,7 @@
 import javafx.collections.ObservableList;
 import javafx.event.EventHandler;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.ResizeFeaturesBase;
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
@@ -290,25 +290,25 @@
         }
     }
     
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case SELECTED_CELLS: {
-//                List<Node> selection = new ArrayList<>();
-//                TableViewSelectionModel<T> sm = getSkinnable().getSelectionModel();
-//                for (TablePosition pos : sm.getSelectedCells()) {
-//                    TableRow<T> row = flow.getPrivateCell(pos.getRow());
-//                    if (row != null) selection.add(row);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//            case FOCUS_ITEM: // TableViewSkinBase
-//            case CELL_AT_ROW_COLUMN: // TableViewSkinBase
-//            case COLUMN_AT_INDEX: // TableViewSkinBase
-//            case HEADER: // TableViewSkinBase
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case SELECTED_CELLS: {
+                List<Node> selection = new ArrayList<>();
+                TableViewSelectionModel<T> sm = getSkinnable().getSelectionModel();
+                for (TablePosition pos : sm.getSelectedCells()) {
+                    TableRow<T> row = flow.getPrivateCell(pos.getRow());
+                    if (row != null) selection.add(row);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+            case FOCUS_ITEM: // TableViewSkinBase
+            case CELL_AT_ROW_COLUMN: // TableViewSkinBase
+            case COLUMN_AT_INDEX: // TableViewSkinBase
+            case HEADER: // TableViewSkinBase
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
     /***************************************************************************
      *                                                                         *
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TableViewSkinBase.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,7 +36,7 @@
 import javafx.collections.ObservableList;
 import javafx.geometry.Insets;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.*;
 
 import javafx.scene.layout.Region;
@@ -949,41 +949,41 @@
     }
 
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_ITEM: {
-//                TableFocusModel<S,?> fm = getFocusModel();
-//                int focusedIndex = fm.getFocusedIndex();
-//                if (focusedIndex == -1) {
-//                    if (placeholderRegion != null && placeholderRegion.isVisible()) {
-//                        return placeholderRegion.getChildren().get(0);
-//                    }
-//                    if (getItemCount() > 0) {
-//                        focusedIndex = 0;
-//                    } else {
-//                        return null;
-//                    }
-//                }
-//                return flow.getPrivateCell(focusedIndex);
-//            }
-//            case CELL_AT_ROW_COLUMN: {
-//                int rowIndex = (Integer)parameters[0];
-//                return flow.getPrivateCell(rowIndex);
-//            }
-//            case COLUMN_AT_INDEX: {
-//                int index = (Integer)parameters[0];
-//                TableColumnBase column = getVisibleLeafColumn(index);
-//                return getTableHeaderRow().getColumnHeaderFor(column);
-//            }
-//            case HEADER: {
-//                /* Not sure how this is used by Accessibility, but without this VoiceOver will not
-//                 * look for column headers */
-//                return getTableHeaderRow();
-//            }
-//            case VERTICAL_SCROLLBAR: return flow.getVbar();
-//            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_ITEM: {
+                TableFocusModel<S,?> fm = getFocusModel();
+                int focusedIndex = fm.getFocusedIndex();
+                if (focusedIndex == -1) {
+                    if (placeholderRegion != null && placeholderRegion.isVisible()) {
+                        return placeholderRegion.getChildren().get(0);
+                    }
+                    if (getItemCount() > 0) {
+                        focusedIndex = 0;
+                    } else {
+                        return null;
+                    }
+                }
+                return flow.getPrivateCell(focusedIndex);
+            }
+            case CELL_AT_ROW_COLUMN: {
+                int rowIndex = (Integer)parameters[0];
+                return flow.getPrivateCell(rowIndex);
+            }
+            case COLUMN_AT_INDEX: {
+                int index = (Integer)parameters[0];
+                TableColumnBase column = getVisibleLeafColumn(index);
+                return getTableHeaderRow().getColumnHeaderFor(column);
+            }
+            case HEADER: {
+                /* Not sure how this is used by Accessibility, but without this VoiceOver will not
+                 * look for column headers */
+                return getTableHeaderRow();
+            }
+            case VERTICAL_SCROLLBAR: return flow.getVbar();
+            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextAreaSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextAreaSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -47,7 +47,7 @@
 import javafx.geometry.VerticalDirection;
 import javafx.scene.Group;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.IndexRange;
 import javafx.scene.control.ScrollPane;
 import javafx.scene.control.TextArea;
@@ -1350,17 +1350,17 @@
         return getSkinnable().sceneToLocal(caretPath.localToScene(caretPath.getBoundsInLocal()));
     }
 
-//    @Override
-//    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case LINE_FOR_OFFSET:
-//            case LINE_START:
-//            case LINE_END:
-//            case BOUNDS_FOR_RANGE:
-//            case OFFSET_AT_POINT:
-//                Text text = getTextNode();
-//                return text.accGetAttribute(attribute, parameters);
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case LINE_FOR_OFFSET:
+            case LINE_START:
+            case LINE_END:
+            case BOUNDS_FOR_RANGE:
+            case OFFSET_AT_POINT:
+                Text text = getTextNode();
+                return text.accGetAttribute(attribute, parameters);
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextFieldSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextFieldSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -40,7 +40,7 @@
 import javafx.geometry.Rectangle2D;
 import javafx.scene.Group;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.IndexRange;
 import javafx.scene.control.PasswordField;
 import javafx.scene.control.TextField;
@@ -816,13 +816,13 @@
         }
     }
 
-//    @Override
-//    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case BOUNDS_FOR_RANGE:
-//            case OFFSET_AT_POINT:
-//                return textNode.accGetAttribute(attribute, parameters);
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case BOUNDS_FOR_RANGE:
+            case OFFSET_AT_POINT:
+                return textNode.accGetAttribute(attribute, parameters);
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TextInputControlSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -48,7 +48,7 @@
 import javafx.geometry.Rectangle2D;
 import javafx.scene.Node;
 import javafx.scene.Scene;
-//import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Action;
 import javafx.scene.control.ContextMenu;
 import javafx.scene.control.IndexRange;
 import javafx.scene.control.MenuItem;
@@ -842,20 +842,20 @@
         return getClassCssMetaData();
     }
 
-//    /** @treatAsPrivate */
-//    protected void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SCROLL_TO_INDEX: {
-//                Integer start = (Integer)parameters[0];
-//                Integer end = (Integer)parameters[1];
-//                if (start != null && end != null) {
-//                    scrollCharacterToVisible(end);
-//                    scrollCharacterToVisible(start);
-//                    scrollCharacterToVisible(end);
-//                }
-//                break;
-//            } 
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    protected void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SCROLL_TO_INDEX: {
+                Integer start = (Integer)parameters[0];
+                Integer end = (Integer)parameters[1];
+                if (start != null && end != null) {
+                    scrollCharacterToVisible(end);
+                    scrollCharacterToVisible(start);
+                    scrollCharacterToVisible(end);
+                }
+                break;
+            } 
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ToolBarSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ToolBarSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -46,9 +46,9 @@
 import javafx.geometry.VPos;
 import javafx.scene.Node;
 import javafx.scene.Parent;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.ContextMenu;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.CustomMenuItem;
@@ -692,20 +692,20 @@
                     /*baseline ignored*/0, HPos.CENTER, VPos.CENTER);
         }
 
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.BUTTON;
-//                case TITLE: return getString("Accessibility.title.ToolBar.OverflowButton");
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
-//
-//        @Override public void accExecuteAction(Action action, Object... parameters) {
-//            switch (action) {
-//                case FIRE: fire(); break;
-//                default: super.accExecuteAction(action); break;
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.BUTTON;
+                case TITLE: return getString("Accessibility.title.ToolBar.OverflowButton");
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
+
+        @Override public void accExecuteAction(Action action, Object... parameters) {
+            switch (action) {
+                case FIRE: fire(); break;
+                default: super.accExecuteAction(action); break;
+            }
+        }
     }
 
     /***************************************************************************
@@ -792,19 +792,19 @@
         return getClassCssMetaData();
     }
 
-//    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case OVERFLOW_BUTTON: return overflowMenu;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    @Override protected void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SHOW_MENU: 
-//                overflowMenu.fire();
-//                break;
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    @Override protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case OVERFLOW_BUTTON: return overflowMenu;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    @Override protected void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SHOW_MENU: 
+                overflowMenu.fire();
+                break;
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableRowSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableRowSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -26,7 +26,7 @@
 package com.sun.javafx.scene.control.skin;
 
 import javafx.collections.FXCollections;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.Control;
 import javafx.scene.control.TableColumnBase;
 import javafx.scene.control.TreeItem;
@@ -403,45 +403,45 @@
 
 
 
-//    @Override
-//    protected Object accGetAttribute(Attribute attribute,
-//                                     Object... parameters) {
-//        final TreeTableView<T> treeTableView = getSkinnable().getTreeTableView();
-//        switch (attribute) {
-//            case SELECTED_CELLS: {
-//                // FIXME this could be optimised to iterate over cellsMap only
-//                // (selectedCells could be big, cellsMap is much smaller)
-//                List<Node> selection = new ArrayList<>();
-//                int index = getSkinnable().getIndex();
-//                for (TreeTablePosition<T,?> pos : treeTableView.getSelectionModel().getSelectedCells()) {
-//                    if (pos.getRow() == index) {
-//                        TreeTableColumn<T,?> column = pos.getTableColumn();
-//                        if (column == null) {
-//                            /* This is the row-based case */
-//                            column = treeTableView.getVisibleLeafColumn(0);
-//                        }
-//                        TreeTableCell<T,?> cell = cellsMap.get(column);
-//                        if (cell != null) selection.add(cell);
-//                    }
-//                    return FXCollections.observableArrayList(selection);
-//                }
-//            }
-//            case CELL_AT_ROW_COLUMN: {
-//                int colIndex = (Integer)parameters[1];
-//                TreeTableColumn<T,?> column = treeTableView.getVisibleLeafColumn(colIndex);
-//                return cellsMap.get(column);
-//            }
-//            case FOCUS_ITEM: {
-//                TreeTableView.TreeTableViewFocusModel<T> fm = treeTableView.getFocusModel();
-//                TreeTablePosition<T,?> focusedCell = fm.getFocusedCell();
-//                TreeTableColumn<T,?> column = focusedCell.getTableColumn();
-//                if (column == null) {
-//                    /* This is the row-based case */
-//                    column = treeTableView.getVisibleLeafColumn(0);
-//                }
-//                return cellsMap.get(column);
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    protected Object accGetAttribute(Attribute attribute,
+                                     Object... parameters) {
+        final TreeTableView<T> treeTableView = getSkinnable().getTreeTableView();
+        switch (attribute) {
+            case SELECTED_CELLS: {
+                // FIXME this could be optimised to iterate over cellsMap only
+                // (selectedCells could be big, cellsMap is much smaller)
+                List<Node> selection = new ArrayList<>();
+                int index = getSkinnable().getIndex();
+                for (TreeTablePosition<T,?> pos : treeTableView.getSelectionModel().getSelectedCells()) {
+                    if (pos.getRow() == index) {
+                        TreeTableColumn<T,?> column = pos.getTableColumn();
+                        if (column == null) {
+                            /* This is the row-based case */
+                            column = treeTableView.getVisibleLeafColumn(0);
+                        }
+                        TreeTableCell<T,?> cell = cellsMap.get(column);
+                        if (cell != null) selection.add(cell);
+                    }
+                    return FXCollections.observableArrayList(selection);
+                }
+            }
+            case CELL_AT_ROW_COLUMN: {
+                int colIndex = (Integer)parameters[1];
+                TreeTableColumn<T,?> column = treeTableView.getVisibleLeafColumn(colIndex);
+                return cellsMap.get(column);
+            }
+            case FOCUS_ITEM: {
+                TreeTableView.TreeTableViewFocusModel<T> fm = treeTableView.getFocusModel();
+                TreeTablePosition<T,?> focusedCell = fm.getFocusedCell();
+                TreeTableColumn<T,?> column = focusedCell.getTableColumn();
+                if (column == null) {
+                    /* This is the row-based case */
+                    column = treeTableView.getVisibleLeafColumn(0);
+                }
+                return cellsMap.get(column);
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableViewSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeTableViewSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -29,8 +29,8 @@
 import com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList;
 
 import javafx.event.WeakEventHandler;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.*;
 
 import com.sun.javafx.scene.control.behavior.TreeTableViewBehavior;
@@ -366,12 +366,12 @@
         // If there is no disclosure node, then add one of my own
         if (cell.getDisclosureNode() == null) {
             final StackPane disclosureNode = new StackPane() {
-//                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//                    switch (attribute) {
-//                        case ROLE: return Role.DISCLOSURE_NODE;
-//                        default: return super.accGetAttribute(attribute, parameters);
-//                    }
-//                }
+                @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+                    switch (attribute) {
+                        case ROLE: return Role.DISCLOSURE_NODE;
+                        default: return super.accGetAttribute(attribute, parameters);
+                    }
+                }
             };
             disclosureNode.getStyleClass().setAll("tree-disclosure-node");
             disclosureNode.setMouseTransparent(true);
@@ -394,32 +394,32 @@
         }
     }
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROW_AT_INDEX: {
-//                final int rowIndex = (Integer)parameters[0];
-//                return rowIndex < 0 ? null : flow.getPrivateCell(rowIndex);
-//            }
-//            case SELECTED_CELLS: {
-//                List<Node> selection = new ArrayList<>();
-//                TreeTableView.TreeTableViewSelectionModel<S> sm = getSkinnable().getSelectionModel();
-//                for (TreeTablePosition<S,?> pos : sm.getSelectedCells()) {
-//                    TreeTableRow<S> row = flow.getPrivateCell(pos.getRow());
-//                    if (row != null) selection.add(row);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//
-//            case FOCUS_ITEM: // TableViewSkinBase
-//            case CELL_AT_ROW_COLUMN: // TableViewSkinBase
-//            case COLUMN_AT_INDEX: // TableViewSkinBase
-//            case HEADER: // TableViewSkinBase
-//            case VERTICAL_SCROLLBAR: // TableViewSkinBase
-//            case HORIZONTAL_SCROLLBAR: // TableViewSkinBase
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROW_AT_INDEX: {
+                final int rowIndex = (Integer)parameters[0];
+                return rowIndex < 0 ? null : flow.getPrivateCell(rowIndex);
+            }
+            case SELECTED_CELLS: {
+                List<Node> selection = new ArrayList<>();
+                TreeTableView.TreeTableViewSelectionModel<S> sm = getSkinnable().getSelectionModel();
+                for (TreeTablePosition<S,?> pos : sm.getSelectedCells()) {
+                    TreeTableRow<S> row = flow.getPrivateCell(pos.getRow());
+                    if (row != null) selection.add(row);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+
+            case FOCUS_ITEM: // TableViewSkinBase
+            case CELL_AT_ROW_COLUMN: // TableViewSkinBase
+            case COLUMN_AT_INDEX: // TableViewSkinBase
+            case HEADER: // TableViewSkinBase
+            case VERTICAL_SCROLLBAR: // TableViewSkinBase
+            case HORIZONTAL_SCROLLBAR: // TableViewSkinBase
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
     
     
     /***************************************************************************
--- a/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/TreeViewSkin.java	Mon Jun 23 20:04:23 2014 -0700
@@ -34,7 +34,7 @@
 import javafx.event.EventType;
 import javafx.event.WeakEventHandler;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.control.*;
 import javafx.scene.control.TreeItem.TreeModificationEvent;
 import javafx.scene.input.MouseEvent;
@@ -474,38 +474,38 @@
         return newSelectionIndex;
     }
 
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case FOCUS_ITEM: {
-//                FocusModel<?> fm = getSkinnable().getFocusModel();
-//                int focusedIndex = fm.getFocusedIndex();
-//                if (focusedIndex == -1) {
-//                    if (getItemCount() > 0) {
-//                        focusedIndex = 0;
-//                    } else {
-//                        return null;
-//                    }
-//                }
-//                return flow.getPrivateCell(focusedIndex);
-//            }
-//            case ROW_AT_INDEX: {
-//                final int rowIndex = (Integer)parameters[0];
-//                return rowIndex < 0 ? null : flow.getPrivateCell(rowIndex);
-//            }
-//            case SELECTED_ROWS: {
-//                MultipleSelectionModel<TreeItem<T>> sm = getSkinnable().getSelectionModel();
-//                ObservableList<Integer> indices = sm.getSelectedIndices();
-//                List<Node> selection = new ArrayList<>(indices.size());
-//                for (int i : indices) {
-//                    TreeCell<T> row = flow.getPrivateCell(i);
-//                    if (row != null) selection.add(row);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//            case VERTICAL_SCROLLBAR: return flow.getVbar();
-//            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case FOCUS_ITEM: {
+                FocusModel<?> fm = getSkinnable().getFocusModel();
+                int focusedIndex = fm.getFocusedIndex();
+                if (focusedIndex == -1) {
+                    if (getItemCount() > 0) {
+                        focusedIndex = 0;
+                    } else {
+                        return null;
+                    }
+                }
+                return flow.getPrivateCell(focusedIndex);
+            }
+            case ROW_AT_INDEX: {
+                final int rowIndex = (Integer)parameters[0];
+                return rowIndex < 0 ? null : flow.getPrivateCell(rowIndex);
+            }
+            case SELECTED_ROWS: {
+                MultipleSelectionModel<TreeItem<T>> sm = getSkinnable().getSelectionModel();
+                ObservableList<Integer> indices = sm.getSelectedIndices();
+                List<Node> selection = new ArrayList<>(indices.size());
+                for (int i : indices) {
+                    TreeCell<T> row = flow.getPrivateCell(i);
+                    if (row != null) selection.add(row);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+            case VERTICAL_SCROLLBAR: return flow.getVbar();
+            case HORIZONTAL_SCROLLBAR: return flow.getHbar();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Button.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Button.java	Mon Jun 23 20:04:23 2014 -0700
@@ -29,8 +29,8 @@
 import javafx.beans.property.BooleanPropertyBase;
 import javafx.event.ActionEvent;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import javafx.css.PseudoClass;
 import com.sun.javafx.scene.control.skin.ButtonSkin;
@@ -218,11 +218,11 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.BUTTON;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.BUTTON;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ButtonBase.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ButtonBase.java	Mon Jun 23 20:04:23 2014 -0700
@@ -31,7 +31,7 @@
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Action;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.ReadOnlyBooleanWrapper;
 
@@ -194,13 +194,13 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case FIRE: 
-//                fire();
-//                break;
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case FIRE: 
+                fire();
+                break;
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/CheckBox.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/CheckBox.java	Mon Jun 23 20:04:23 2014 -0700
@@ -32,8 +32,8 @@
 import javafx.event.ActionEvent;
 import javafx.geometry.Pos;
 import javafx.css.PseudoClass;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import com.sun.javafx.scene.control.skin.CheckBoxSkin;
 
 /**
@@ -131,7 +131,7 @@
                     final boolean active = get();
                     pseudoClassStateChanged(PSEUDO_CLASS_DETERMINATE,  !active);
                     pseudoClassStateChanged(PSEUDO_CLASS_INDETERMINATE, active);
-//                    accSendNotification(Attribute.INDETERMINATE);
+                    accSendNotification(Attribute.INDETERMINATE);
                 }
 
                 @Override
@@ -165,7 +165,7 @@
                 @Override protected void invalidated() {
                     final Boolean v = get();
                     pseudoClassStateChanged(PSEUDO_CLASS_SELECTED, v);
-//                    accSendNotification(Attribute.SELECTED);
+                    accSendNotification(Attribute.SELECTED);
                 }
 
                 @Override
@@ -266,13 +266,13 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.CHECKBOX;
-//            case SELECTED: return isSelected();
-//            case INDETERMINATE: return isIndeterminate();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.CHECKBOX;
+            case SELECTED: return isSelected();
+            case INDETERMINATE: return isIndeterminate();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ChoiceBox.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ChoiceBox.java	Mon Jun 23 20:04:23 2014 -0700
@@ -35,9 +35,9 @@
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.ReadOnlyBooleanWrapper;
 import javafx.event.ActionEvent;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.util.StringConverter;
 import javafx.css.PseudoClass;
 
@@ -163,7 +163,7 @@
     private ReadOnlyBooleanWrapper showing = new ReadOnlyBooleanWrapper() {
         @Override protected void invalidated() {
             pseudoClassStateChanged(SHOWING_PSEUDOCLASS_STATE, get());
-//            accSendNotification(Attribute.EXPANDED);
+            accSendNotification(Attribute.EXPANDED);
         }
 
         @Override
@@ -280,7 +280,7 @@
             if (sm != null) {
                 sm.select(super.getValue());
             }
-//            accSendNotification(Attribute.TITLE);
+            accSendNotification(Attribute.TITLE);
         }
     };
     public final void setValue(T value) { valueProperty().set(value); }
@@ -414,32 +414,32 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch(attribute) {
-//            case ROLE: return Role.COMBOBOX;
-//            case TITLE:
-//                //let the skin first.
-//                Object title = super.accGetAttribute(attribute, parameters);
-//                if (title != null) return title;
-//                StringConverter<T> converter = getConverter();
-//                if (converter == null) {
-//                    return getValue() != null ? getValue().toString() : "";
-//                }
-//                return converter.toString(getValue());
-//            case EXPANDED: return isShowing();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    @Override
-//    public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case COLLAPSE: hide(); break;
-//            case EXPAND: show(); break;
-//            default: super.accExecuteAction(action); break;
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch(attribute) {
+            case ROLE: return Role.COMBOBOX;
+            case TITLE:
+                //let the skin first.
+                Object title = super.accGetAttribute(attribute, parameters);
+                if (title != null) return title;
+                StringConverter<T> converter = getConverter();
+                if (converter == null) {
+                    return getValue() != null ? getValue().toString() : "";
+                }
+                return converter.toString(getValue());
+            case EXPANDED: return isShowing();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    @Override
+    public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case COLLAPSE: hide(); break;
+            case EXPAND: show(); break;
+            default: super.accExecuteAction(action); break;
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ComboBox.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ComboBox.java	Mon Jun 23 20:04:23 2014 -0700
@@ -35,8 +35,8 @@
 import javafx.collections.ListChangeListener;
 import javafx.collections.ObservableList;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.util.Callback;
 import javafx.util.StringConverter;
 
@@ -592,22 +592,22 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch(attribute) {
-//            case ROLE: return Role.COMBOBOX;
-//            case TITLE:
-//                //let the skin first.
-//                Object title = super.accGetAttribute(attribute, parameters);
-//                if (title != null) return title;
-//                StringConverter<T> converter = getConverter();
-//                if (converter == null) {
-//                    return getValue() != null ? getValue().toString() : "";
-//                }
-//                return converter.toString(getValue());
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch(attribute) {
+            case ROLE: return Role.COMBOBOX;
+            case TITLE:
+                //let the skin first.
+                Object title = super.accGetAttribute(attribute, parameters);
+                if (title != null) return title;
+                StringConverter<T> converter = getConverter();
+                if (converter == null) {
+                    return getValue() != null ? getValue().toString() : "";
+                }
+                return converter.toString(getValue());
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ComboBoxBase.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ComboBoxBase.java	Mon Jun 23 20:04:23 2014 -0700
@@ -32,8 +32,8 @@
 import javafx.event.Event;
 import javafx.event.EventHandler;
 import javafx.event.EventType;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 
 /**
  * Abstract base class for ComboBox-like controls. A ComboBox typically has
@@ -208,7 +208,7 @@
             showing = new ReadOnlyBooleanWrapper(false) {
                 @Override protected void invalidated() {
                     pseudoClassStateChanged(PSEUDO_CLASS_SHOWING, get());
-//                    accSendNotification(Attribute.EXPANDED);
+                    accSendNotification(Attribute.EXPANDED);
                 }
 
                 @Override
@@ -468,24 +468,24 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case EXPANDED: return isShowing();
-//            case EDITABLE: return isEditable();
-//            case SELECTION_START: //skin
-//            case SELECTION_END: //skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case EXPAND: show(); break;
-//            case COLLAPSE: hide(); break;
-//            default: super.accExecuteAction(action); break;
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case EXPANDED: return isShowing();
+            case EDITABLE: return isEditable();
+            case SELECTION_START: //skin
+            case SELECTION_END: //skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case EXPAND: show(); break;
+            case COLLAPSE: hide(); break;
+            default: super.accExecuteAction(action); break;
+        }
+    }
 }
 
--- a/modules/controls/src/main/java/javafx/scene/control/Control.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Control.java	Mon Jun 23 20:04:23 2014 -0700
@@ -43,8 +43,8 @@
 import javafx.event.EventHandler;
 import javafx.geometry.Side;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.input.ContextMenuEvent;
 import javafx.scene.layout.Region;
 import com.sun.javafx.application.PlatformImpl;
@@ -921,35 +921,35 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case TOOLTIP:
-//                Tooltip tooltip = getTooltip();
-//                return tooltip == null ? "" : tooltip.getText();
-//            default:
-//        }
-//        if (skinBase != null) {
-//            Object result = skinBase.accGetAttribute(attribute, parameters);
-//            if (result != null) return result;
-//        }
-//        return super.accGetAttribute(attribute, parameters);
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SHOW_MENU:
-//                ContextMenu menu = getContextMenu();
-//                if (menu != null) {
-//                    menu.show(this, Side.RIGHT, 0, 0);
-//                }
-//                break;
-//            default:
-//        }
-//        if (skinBase != null) {
-//            skinBase.accExecuteAction(action, parameters);
-//        }
-//        super.accExecuteAction(action, parameters);
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case TOOLTIP:
+                Tooltip tooltip = getTooltip();
+                return tooltip == null ? "" : tooltip.getText();
+            default:
+        }
+        if (skinBase != null) {
+            Object result = skinBase.accGetAttribute(attribute, parameters);
+            if (result != null) return result;
+        }
+        return super.accGetAttribute(attribute, parameters);
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SHOW_MENU:
+                ContextMenu menu = getContextMenu();
+                if (menu != null) {
+                    menu.show(this, Side.RIGHT, 0, 0);
+                }
+                break;
+            default:
+        }
+        if (skinBase != null) {
+            skinBase.accExecuteAction(action, parameters);
+        }
+        super.accExecuteAction(action, parameters);
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/DatePicker.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/DatePicker.java	Mon Jun 23 20:04:23 2014 -0700
@@ -54,8 +54,8 @@
 import javafx.css.Styleable;
 import javafx.css.StyleableBooleanProperty;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.util.Callback;
 import javafx.util.StringConverter;
 
@@ -547,21 +547,21 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.DATE_PICKER;
-//            case DATE: return getValue();
-//            case TITLE: {
-//                LocalDate date = getValue();
-//                StringConverter<LocalDate> c = getConverter();
-//                if (date != null && c != null) {
-//                    return c.toString(date);
-//                }
-//                return "";
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.DATE_PICKER;
+            case DATE: return getValue();
+            case TITLE: {
+                LocalDate date = getValue();
+                StringConverter<LocalDate> c = getConverter();
+                if (date != null && c != null) {
+                    return c.toString(date);
+                }
+                return "";
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Hyperlink.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Hyperlink.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,8 +36,8 @@
 import com.sun.javafx.scene.control.skin.HyperlinkSkin;
 
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 
 /**
@@ -186,12 +186,12 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.HYPERLINK;
-//            case VISITED: return isVisited();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.HYPERLINK;
+            case VISITED: return isVisited();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Label.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Label.java	Mon Jun 23 20:04:23 2014 -0700
@@ -34,8 +34,8 @@
 import javafx.beans.value.WritableValue;
 import javafx.css.StyleableProperty;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * Label is a non-editable text control. A Label is useful for displaying
@@ -183,12 +183,12 @@
      *                                                                         *
      **************************************************************************/
        
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TEXT;
-//            case TITLE: //fall through so that mnemonic can be properly handled
-//            default: return super.accGetAttribute(attribute, parameters); 
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TEXT;
+            case TITLE: //fall through so that mnemonic can be properly handled
+            default: return super.accGetAttribute(attribute, parameters); 
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Labeled.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Labeled.java	Mon Jun 23 20:04:23 2014 -0700
@@ -50,7 +50,7 @@
 import javafx.geometry.Orientation;
 import javafx.geometry.Pos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.paint.Color;
@@ -1066,11 +1066,11 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case TITLE: //fall through so that mnemonic can be properly handled
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case TITLE: //fall through so that mnemonic can be properly handled
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
  }
--- a/modules/controls/src/main/java/javafx/scene/control/ListCell.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ListCell.java	Mon Jun 23 20:04:23 2014 -0700
@@ -38,9 +38,9 @@
 import javafx.collections.ListChangeListener;
 import javafx.collections.ObservableList;
 import javafx.collections.WeakListChangeListener;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import com.sun.javafx.scene.control.skin.ListCellSkin;
 
@@ -544,49 +544,49 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.LIST_ITEM;
-//            case TITLE: {
-//                String text = getText();
-//                /* If the data bounded to cell is a Node
-//                 * the default behavior is to hide the text
-//                 * and use data as the graphics. (see ListViewSkin#createDefaultCellImpl).
-//                 * If the text is empty try to get graphics. 
-//                 */
-//                if (text == null || text.isEmpty()) {
-//                    if (getGraphic() != null) {
-//                        text = (String)getGraphic().accGetAttribute(Attribute.TITLE);
-//                    }
-//                }
-//                return text;
-//            }
-//            case INDEX: return getIndex();
-//            case SELECTED: return isSelected();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final ListView<T> listView = getListView();
-//        final MultipleSelectionModel<T> sm = listView == null ? null : listView.getSelectionModel();
-//        switch (action) {
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.LIST_ITEM;
+            case TITLE: {
+                String text = getText();
+                /* If the data bounded to cell is a Node
+                 * the default behavior is to hide the text
+                 * and use data as the graphics. (see ListViewSkin#createDefaultCellImpl).
+                 * If the text is empty try to get graphics. 
+                 */
+                if (text == null || text.isEmpty()) {
+                    if (getGraphic() != null) {
+                        text = (String)getGraphic().accGetAttribute(Attribute.TITLE);
+                    }
+                }
+                return text;
+            }
+            case INDEX: return getIndex();
+            case SELECTED: return isSelected();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final ListView<T> listView = getListView();
+        final MultipleSelectionModel<T> sm = listView == null ? null : listView.getSelectionModel();
+        switch (action) {
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
 
--- a/modules/controls/src/main/java/javafx/scene/control/ListView.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ListView.java	Mon Jun 23 20:04:23 2014 -0700
@@ -52,9 +52,9 @@
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.geometry.Orientation;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.layout.Region;
 import javafx.util.Callback;
 import javafx.css.StyleableObjectProperty;
@@ -1082,22 +1082,22 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.LIST_VIEW;
-//            case ROW_COUNT: return getItems().size();
-//            case MULTIPLE_SELECTION: {
-//                MultipleSelectionModel<T> sm = getSelectionModel();
-//                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
-//            }
-//            case ROW_AT_INDEX: //Skin
-//            case SELECTED_ROWS: //Skin
-//            case VERTICAL_SCROLLBAR: //Skin
-//            case HORIZONTAL_SCROLLBAR: // Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.LIST_VIEW;
+            case ROW_COUNT: return getItems().size();
+            case MULTIPLE_SELECTION: {
+                MultipleSelectionModel<T> sm = getSelectionModel();
+                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
+            }
+            case ROW_AT_INDEX: //Skin
+            case SELECTED_ROWS: //Skin
+            case VERTICAL_SCROLLBAR: //Skin
+            case HORIZONTAL_SCROLLBAR: // Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 
     /***************************************************************************
@@ -1420,7 +1420,7 @@
             if (listView.getFocusModel() == null) return;
             listView.getFocusModel().focus(row);
 
-//            listView.accSendNotification(Attribute.SELECTED_ROWS);
+            listView.accSendNotification(Attribute.SELECTED_ROWS);
         }
 
         /** {@inheritDoc} */
--- a/modules/controls/src/main/java/javafx/scene/control/MenuBar.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/MenuBar.java	Mon Jun 23 20:04:23 2014 -0700
@@ -43,8 +43,8 @@
 
 import javafx.css.Styleable;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * <p>
@@ -236,13 +236,13 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.MENU_BAR;
-//            case FOCUS_NODE: // Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.MENU_BAR;
+            case FOCUS_NODE: // Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
 
--- a/modules/controls/src/main/java/javafx/scene/control/MenuButton.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/MenuButton.java	Mon Jun 23 20:04:23 2014 -0700
@@ -33,9 +33,9 @@
 import javafx.event.ActionEvent;
 import javafx.geometry.Side;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import com.sun.javafx.scene.control.skin.MenuButtonSkin;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.ReadOnlyBooleanWrapper;
@@ -268,25 +268,25 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.MENU_BUTTON;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case FIRE:
-//                if (isShowing()) {
-//                    hide();
-//                } else {
-//                    show();
-//                }
-//                break;
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.MENU_BUTTON;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case FIRE:
+                if (isShowing()) {
+                    hide();
+                } else {
+                    show();
+                }
+                break;
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Pagination.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Pagination.java	Mon Jun 23 20:04:23 2014 -0700
@@ -40,8 +40,8 @@
 import javafx.css.Styleable;
 import javafx.css.StyleableProperty;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.util.Callback;
 import com.sun.javafx.css.converters.SizeConverter;
 import com.sun.javafx.scene.control.skin.PaginationSkin;
@@ -383,13 +383,13 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.PAGINATION;
-//            case PAGES: // Skin
-//            case SELECTED_PAGE: // Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.PAGINATION;
+            case PAGES: // Skin
+            case SELECTED_PAGE: // Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/PasswordField.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/PasswordField.java	Mon Jun 23 20:04:23 2014 -0700
@@ -25,8 +25,8 @@
 
 package javafx.scene.control;
 
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * Text field that masks entered characters.
@@ -68,12 +68,12 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.PASSWORD_FIELD;
-//            case TITLE: return null;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.PASSWORD_FIELD;
+            case TITLE: return null;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ProgressBar.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ProgressBar.java	Mon Jun 23 20:04:23 2014 -0700
@@ -29,7 +29,7 @@
 
 import javafx.beans.value.WritableValue;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Attribute;
 import javafx.geometry.Orientation;
 
 /**
@@ -130,11 +130,11 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ORIENTATION: return Orientation.HORIZONTAL;
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ORIENTATION: return Orientation.HORIZONTAL;
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }    
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ProgressIndicator.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ProgressIndicator.java	Mon Jun 23 20:04:23 2014 -0700
@@ -35,8 +35,8 @@
 import javafx.beans.property.ReadOnlyBooleanWrapper;
 import javafx.beans.value.WritableValue;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 
 /**
@@ -245,16 +245,16 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.PROGRESS_INDICATOR;
-//            case VALUE: return getProgress();
-//            case MAX_VALUE: return 1.0;
-//            case MIN_VALUE: return 0.0;
-//            case INDETERMINATE: return isIndeterminate();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.PROGRESS_INDICATOR;
+            case VALUE: return getProgress();
+            case MAX_VALUE: return 1.0;
+            case MIN_VALUE: return 0.0;
+            case INDETERMINATE: return isIndeterminate();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/javafx/scene/control/RadioButton.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/RadioButton.java	Mon Jun 23 20:04:23 2014 -0700
@@ -31,8 +31,8 @@
 
 import javafx.beans.value.WritableValue;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * <p>RadioButtons create a series of items where only one item can be
@@ -145,12 +145,12 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.RADIO_BUTTON;
-//            case SELECTED: return isSelected();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.RADIO_BUTTON;
+            case SELECTED: return isSelected();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ScrollBar.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ScrollBar.java	Mon Jun 23 20:04:23 2014 -0700
@@ -41,9 +41,9 @@
 import javafx.css.StyleableObjectProperty;
 import javafx.css.StyleableProperty;
 import javafx.geometry.Orientation;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -492,31 +492,31 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.SCROLL_BAR;
-//            case VALUE: return getValue();
-//            case MAX_VALUE: return getMax();
-//            case MIN_VALUE: return getMin();
-//            case ORIENTATION: return getOrientation();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case INCREMENT: increment(); break;
-//            case DECREMENT: decrement(); break;
-//            case BLOCK_INCREMENT: blockIncrement(); break;
-//            case BLOCK_DECREMENT: blockDecrement(); break;
-//            case SET_VALUE: {
-//                Double value = (Double) parameters[0];
-//                if (value != null) setValue(value);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.SCROLL_BAR;
+            case VALUE: return getValue();
+            case MAX_VALUE: return getMax();
+            case MIN_VALUE: return getMin();
+            case ORIENTATION: return getOrientation();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case INCREMENT: increment(); break;
+            case DECREMENT: decrement(); break;
+            case BLOCK_INCREMENT: blockIncrement(); break;
+            case BLOCK_DECREMENT: blockDecrement(); break;
+            case SET_VALUE: {
+                Double value = (Double) parameters[0];
+                if (value != null) setValue(value);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ScrollPane.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ScrollPane.java	Mon Jun 23 20:04:23 2014 -0700
@@ -44,8 +44,8 @@
 import javafx.geometry.BoundingBox;
 import javafx.geometry.Bounds;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import com.sun.javafx.css.converters.BooleanConverter;
 import com.sun.javafx.css.converters.EnumConverter;
@@ -737,16 +737,16 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.SCROLL_PANE;
-//            case CONTENTS: return getContent();
-//            case VERTICAL_SCROLLBAR: //Skin
-//            case HORIZONTAL_SCROLLBAR: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.SCROLL_PANE;
+            case CONTENTS: return getContent();
+            case VERTICAL_SCROLLBAR: //Skin
+            case HORIZONTAL_SCROLLBAR: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 
     /***************************************************************************
--- a/modules/controls/src/main/java/javafx/scene/control/SkinBase.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/SkinBase.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,8 +36,8 @@
 import javafx.geometry.Insets;
 import javafx.geometry.VPos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.Region;
 
@@ -761,14 +761,14 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        return null;
-//    }
-//
-//    /** @treatAsPrivate */
-//    protected void accExecuteAction(Action action, Object... parameters) {
-//    }
+    /** @treatAsPrivate */
+    protected Object accGetAttribute(Attribute attribute, Object... parameters) {
+        return null;
+    }
+
+    /** @treatAsPrivate */
+    protected void accExecuteAction(Action action, Object... parameters) {
+    }
 
     /***************************************************************************
      *                                                                         *
--- a/modules/controls/src/main/java/javafx/scene/control/Slider.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Slider.java	Mon Jun 23 20:04:23 2014 -0700
@@ -38,9 +38,9 @@
 import javafx.beans.property.SimpleObjectProperty;
 import javafx.beans.value.WritableValue;
 import javafx.geometry.Orientation;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.util.StringConverter;
 
 import com.sun.javafx.Utils;
@@ -147,7 +147,7 @@
                         setMin(get());
                     }
                     adjustValues();
-//                    accSendNotification(Attribute.MAX_VALUE);
+                    accSendNotification(Attribute.MAX_VALUE);
                 }
 
                 @Override
@@ -184,7 +184,7 @@
                         setMax(get());
                     }
                     adjustValues();
-//                    accSendNotification(Attribute.MIN_VALUE);
+                    accSendNotification(Attribute.MIN_VALUE);
                 }
 
                 @Override
@@ -221,7 +221,7 @@
             value = new DoublePropertyBase(0) {
                 @Override protected void invalidated() {
                     adjustValues();
-//                    accSendNotification(Attribute.VALUE);
+                    accSendNotification(Attribute.VALUE);
                 }
 
                 @Override
@@ -814,29 +814,29 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.SLIDER;
-//            case VALUE: return getValue();
-//            case MAX_VALUE: return getMax();
-//            case MIN_VALUE: return getMin();
-//            case ORIENTATION: return getOrientation();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case INCREMENT: increment(); break;
-//            case DECREMENT: decrement(); break;
-//            case SET_VALUE: {
-//                Double value = (Double) parameters[0];
-//                if (value != null) setValue(value);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.SLIDER;
+            case VALUE: return getValue();
+            case MAX_VALUE: return getMax();
+            case MIN_VALUE: return getMin();
+            case ORIENTATION: return getOrientation();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case INCREMENT: increment(); break;
+            case DECREMENT: decrement(); break;
+            case SET_VALUE: {
+                Double value = (Double) parameters[0];
+                if (value != null) setValue(value);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/SplitMenuButton.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/SplitMenuButton.java	Mon Jun 23 20:04:23 2014 -0700
@@ -26,9 +26,9 @@
 package javafx.scene.control;
 
 import javafx.event.ActionEvent;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import com.sun.javafx.scene.control.skin.SplitMenuButtonSkin;
 
 /**
@@ -140,29 +140,29 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.SPLIT_MENU_BUTTON;
-//            case EXPANDED: return isShowing();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case FIRE:
-//                fire();
-//                break;
-//            case EXPAND:
-//                show();
-//                break;
-//            case COLLAPSE:
-//                hide();
-//                break;
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.SPLIT_MENU_BUTTON;
+            case EXPANDED: return isShowing();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case FIRE:
+                fire();
+                break;
+            case EXPAND:
+                show();
+                break;
+            case COLLAPSE:
+                hide();
+                break;
+            default: super.accExecuteAction(action);
+        }
+    }
 
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TabPane.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TabPane.java	Mon Jun 23 20:04:23 2014 -0700
@@ -40,8 +40,8 @@
 import javafx.collections.ListChangeListener;
 import javafx.collections.ObservableList;
 import javafx.geometry.Side;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.css.StyleableDoubleProperty;
 import javafx.css.CssMetaData;
 import javafx.css.PseudoClass;
@@ -609,15 +609,15 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TAB_PANE;
-//            case TABS: //Skin
-//            case SELECTED_TAB: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TAB_PANE;
+            case TABS: //Skin
+            case SELECTED_TAB: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 
 
 
@@ -697,7 +697,7 @@
             }
 
             /* Does this get all the change events */
-//            tabPane.accSendNotification(Attribute.SELECTED_TAB);
+            tabPane.accSendNotification(Attribute.SELECTED_TAB);
         }
 
         @Override public void select(Tab tab) {
--- a/modules/controls/src/main/java/javafx/scene/control/TableCell.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TableCell.java	Mon Jun 23 20:04:23 2014 -0700
@@ -31,9 +31,9 @@
 import javafx.beans.value.ObservableValue;
 import javafx.collections.ListChangeListener;
 import javafx.event.Event;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.TableView.TableViewFocusModel;
 
 import com.sun.javafx.scene.control.skin.TableCellSkin;
@@ -779,37 +779,37 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TABLE_CELL;
-//            case ROW_INDEX: return getIndex();
-//            case COLUMN_INDEX: return columnIndex;
-//            case SELECTED: return isInCellSelectionMode() ? isSelected() : getTableRow().isSelected();
-//            case TITLE: //fall through so that mnemonic can be properly handled
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final TableView<S> tableView = getTableView();
-//        final TableSelectionModel<S> sm = tableView == null ? null : tableView.getSelectionModel();
-//
-//        switch (action) {
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex(), getTableColumn());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex(), getTableColumn());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex(), getTableColumn());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TABLE_CELL;
+            case ROW_INDEX: return getIndex();
+            case COLUMN_INDEX: return columnIndex;
+            case SELECTED: return isInCellSelectionMode() ? isSelected() : getTableRow().isSelected();
+            case TITLE: //fall through so that mnemonic can be properly handled
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final TableView<S> tableView = getTableView();
+        final TableSelectionModel<S> sm = tableView == null ? null : tableView.getSelectionModel();
+
+        switch (action) {
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex(), getTableColumn());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex(), getTableColumn());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex(), getTableColumn());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TableRow.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TableRow.java	Mon Jun 23 20:04:23 2014 -0700
@@ -28,9 +28,9 @@
 import javafx.beans.InvalidationListener;
 import javafx.beans.WeakInvalidationListener;
 import javafx.collections.ListChangeListener;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.TableView.TableViewFocusModel;
 
 import javafx.collections.WeakListChangeListener;
@@ -364,37 +364,37 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TABLE_ROW;
-//            case INDEX: return getIndex();
-//            case FOCUS_ITEM: //Skin
-//            case SELECTED_CELLS: //Skin
-//            case CELL_AT_ROW_COLUMN: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final TableView<T> tableView = getTableView();
-//        final MultipleSelectionModel<T> sm = tableView == null ? null : tableView.getSelectionModel();
-//
-//        switch (action) {
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TABLE_ROW;
+            case INDEX: return getIndex();
+            case FOCUS_ITEM: //Skin
+            case SELECTED_CELLS: //Skin
+            case CELL_AT_ROW_COLUMN: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final TableView<T> tableView = getTableView();
+        final MultipleSelectionModel<T> sm = tableView == null ? null : tableView.getSelectionModel();
+
+        switch (action) {
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TableView.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TableView.java	Mon Jun 23 20:04:23 2014 -0700
@@ -56,9 +56,9 @@
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.layout.Region;
 import javafx.util.Callback;
 
@@ -1644,58 +1644,58 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TABLE_VIEW;
-//            case COLUMN_COUNT: return getVisibleLeafColumns().size();
-//            case ROW_COUNT: return getItems().size();
-//            case SELECTED_CELLS: {
-//                // TableViewSkin returns TableRows back to TableView.
-//                // TableRowSkin returns TableCells back to TableRow.
-//                ObservableList<TableRow<S>> rows = (ObservableList<TableRow<S>>)super.accGetAttribute(attribute, parameters);
-//                List<Node> selection = new ArrayList<>();
-//                for (TableRow<S> row : rows) {
-//                    ObservableList<Node> cells = (ObservableList<Node>)row.accGetAttribute(attribute, parameters);
-//                    if (cells != null) selection.addAll(cells);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//            case FOCUS_ITEM: {
-//                Node row = (Node)super.accGetAttribute(attribute, parameters);
-//                if (row == null) return null;
-//                Node cell = (Node)row.accGetAttribute(attribute, parameters);
-//                /* cell equals to null means the row is a placeholder node */
-//                return cell != null ?  cell : row;
-//            }
-//            case CELL_AT_ROW_COLUMN: {
-//                TableRow<S> row = (TableRow<S>)super.accGetAttribute(attribute, parameters);
-//                return row != null ? row.accGetAttribute(attribute, parameters) : null;
-//            }
-//            case MULTIPLE_SELECTION: {
-//                MultipleSelectionModel<S> sm = getSelectionModel();
-//                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
-//            }
-//            case COLUMN_AT_INDEX: //Skin
-//            case COLUMN_INDEX: //Skin
-//            case HEADER: //Skin
-//            case VERTICAL_SCROLLBAR: //Skin
-//            case HORIZONTAL_SCROLLBAR: // Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SCROLL_TO_INDEX: {
-//                int index = (int) parameters[0];
-//                scrollTo(index);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TABLE_VIEW;
+            case COLUMN_COUNT: return getVisibleLeafColumns().size();
+            case ROW_COUNT: return getItems().size();
+            case SELECTED_CELLS: {
+                // TableViewSkin returns TableRows back to TableView.
+                // TableRowSkin returns TableCells back to TableRow.
+                ObservableList<TableRow<S>> rows = (ObservableList<TableRow<S>>)super.accGetAttribute(attribute, parameters);
+                List<Node> selection = new ArrayList<>();
+                for (TableRow<S> row : rows) {
+                    ObservableList<Node> cells = (ObservableList<Node>)row.accGetAttribute(attribute, parameters);
+                    if (cells != null) selection.addAll(cells);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+            case FOCUS_ITEM: {
+                Node row = (Node)super.accGetAttribute(attribute, parameters);
+                if (row == null) return null;
+                Node cell = (Node)row.accGetAttribute(attribute, parameters);
+                /* cell equals to null means the row is a placeholder node */
+                return cell != null ?  cell : row;
+            }
+            case CELL_AT_ROW_COLUMN: {
+                TableRow<S> row = (TableRow<S>)super.accGetAttribute(attribute, parameters);
+                return row != null ? row.accGetAttribute(attribute, parameters) : null;
+            }
+            case MULTIPLE_SELECTION: {
+                MultipleSelectionModel<S> sm = getSelectionModel();
+                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
+            }
+            case COLUMN_AT_INDEX: //Skin
+            case COLUMN_INDEX: //Skin
+            case HEADER: //Skin
+            case VERTICAL_SCROLLBAR: //Skin
+            case HORIZONTAL_SCROLLBAR: // Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SCROLL_TO_INDEX: {
+                int index = (int) parameters[0];
+                scrollTo(index);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 
 
 
@@ -2725,7 +2725,7 @@
             setSelectedItem(getModelItem(row));
 
             /* Does this get all the change events ? */
-//            getTableView().accSendNotification(Attribute.SELECTED_CELLS);
+            getTableView().accSendNotification(Attribute.SELECTED_CELLS);
         }
         
         /** {@inheritDoc} */
--- a/modules/controls/src/main/java/javafx/scene/control/TextArea.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TextArea.java	Mon Jun 23 20:04:23 2014 -0700
@@ -53,8 +53,8 @@
 import com.sun.javafx.scene.control.skin.TextAreaSkin;
 
 import javafx.css.Styleable;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * Text input component that allows a user to enter multiple lines of
@@ -703,16 +703,16 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TEXT_AREA;
-//            case LINE_FOR_OFFSET: //Skin
-//            case LINE_START: //Skin
-//            case LINE_END:  //Skin
-//            case BOUNDS_FOR_RANGE: //Skin
-//            case OFFSET_AT_POINT: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TEXT_AREA;
+            case LINE_FOR_OFFSET: //Skin
+            case LINE_START: //Skin
+            case LINE_END:  //Skin
+            case BOUNDS_FOR_RANGE: //Skin
+            case OFFSET_AT_POINT: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TextField.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TextField.java	Mon Jun 23 20:04:23 2014 -0700
@@ -42,8 +42,8 @@
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.geometry.Pos;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import com.sun.javafx.binding.ExpressionHelper;
 import com.sun.javafx.css.converters.EnumConverter;
@@ -343,13 +343,13 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TEXT_FIELD;
-//            case BOUNDS_FOR_RANGE: //Skin
-//            case OFFSET_AT_POINT: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TEXT_FIELD;
+            case BOUNDS_FOR_RANGE: //Skin
+            case OFFSET_AT_POINT: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TextInputControl.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TextInputControl.java	Mon Jun 23 20:04:23 2014 -0700
@@ -52,8 +52,8 @@
 import javafx.css.Styleable;
 import javafx.css.StyleableObjectProperty;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.input.Clipboard;
 import javafx.scene.input.ClipboardContent;
 import javafx.scene.text.Font;
@@ -899,7 +899,7 @@
         this.caretPosition.set(Utils.clamp(0, caretPosition, getLength()));
         this.anchor.set(Utils.clamp(0, anchor, getLength()));
         this.selection.set(IndexRange.normalize(getAnchor(), getCaretPosition()));
-//        accSendNotification(Attribute.SELECTION_START);
+        accSendNotification(Attribute.SELECTION_START);
     }
 
     /**
@@ -1064,7 +1064,7 @@
 
         private void invalidate() {
             markInvalid();
-//            accSendNotification(Attribute.TITLE);
+            accSendNotification(Attribute.TITLE);
         }
 
         @Override public void bind(ObservableValue<? extends String> observable) {
@@ -1216,41 +1216,41 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case TITLE: {
-//                String text = getText();
-//                if (text == null || text.isEmpty()) {
-//                    text = getPromptText();
-//                }
-//                return text;
-//            }
-//            case SELECTION_START: return getSelection().getStart();
-//            case SELECTION_END: return getSelection().getEnd();
-//            case CARET_OFFSET: return getCaretPosition();
-//            case FONT: return getFont();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SET_TITLE: {
-//                String value = (String) parameters[0];
-//                if (value != null) setText(value);
-//            }
-//            case SELECT: {
-//                Integer start = (Integer) parameters[0];
-//                Integer end = (Integer) parameters[1];
-//                if (start != null && end != null) {
-//                    selectRange(start,  end);
-//                }
-//                break;
-//            }
-//            case SCROLL_TO_INDEX: //Skin
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case TITLE: {
+                String text = getText();
+                if (text == null || text.isEmpty()) {
+                    text = getPromptText();
+                }
+                return text;
+            }
+            case SELECTION_START: return getSelection().getStart();
+            case SELECTION_END: return getSelection().getEnd();
+            case CARET_OFFSET: return getCaretPosition();
+            case FONT: return getFont();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SET_TITLE: {
+                String value = (String) parameters[0];
+                if (value != null) setText(value);
+            }
+            case SELECT: {
+                Integer start = (Integer) parameters[0];
+                Integer end = (Integer) parameters[1];
+                if (start != null && end != null) {
+                    selectRange(start,  end);
+                }
+                break;
+            }
+            case SCROLL_TO_INDEX: //Skin
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TitledPane.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TitledPane.java	Mon Jun 23 20:04:23 2014 -0700
@@ -46,9 +46,9 @@
 import javafx.beans.DefaultProperty;
 import javafx.css.Styleable;
 import javafx.css.StyleableProperty;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * <p>A TitledPane is a panel with a title that can be opened and closed.</p>
@@ -153,7 +153,7 @@
             final boolean active = get();
             pseudoClassStateChanged(PSEUDO_CLASS_EXPANDED,   active);
             pseudoClassStateChanged(PSEUDO_CLASS_COLLAPSED, !active);
-//            accSendNotification(Attribute.EXPANDED);
+            accSendNotification(Attribute.EXPANDED);
         }
 
         @Override
@@ -362,22 +362,22 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TITLED_PANE;
-//            case TITLE: return getText();
-//            case EXPANDED: return isExpanded();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case EXPAND: setExpanded(true); break;
-//            case COLLAPSE: setExpanded(false); break;
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TITLED_PANE;
+            case TITLE: return getText();
+            case EXPANDED: return isExpanded();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case EXPAND: setExpanded(true); break;
+            case COLLAPSE: setExpanded(false); break;
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ToggleButton.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ToggleButton.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,8 +36,8 @@
 import javafx.event.ActionEvent;
 import javafx.geometry.Pos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.css.PseudoClass;
 
 import com.sun.javafx.scene.control.skin.ToggleButtonSkin;
@@ -161,7 +161,7 @@
                     // Note: these changes need to be done before selectToggle/clearSelectedToggle since
                     // those operations change properties and can execute user code, possibly modifying selected property again
                     pseudoClassStateChanged(PSEUDO_CLASS_SELECTED, selected);
-//                    accSendNotification(Attribute.SELECTED);
+                    accSendNotification(Attribute.SELECTED);
                     if (tg != null) {
                         if (selected) {
                             tg.selectToggle(ToggleButton.this);
@@ -289,12 +289,12 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TOGGLE_BUTTON;
-//            case SELECTED: return isSelected();
-//            default: return super.accGetAttribute(attribute, parameters); 
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TOGGLE_BUTTON;
+            case SELECTED: return isSelected();
+            default: return super.accGetAttribute(attribute, parameters); 
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/ToolBar.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/ToolBar.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,8 +36,8 @@
 import javafx.collections.ObservableList;
 import javafx.geometry.Orientation;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.css.StyleableObjectProperty;
 import javafx.css.CssMetaData;
 import javafx.css.PseudoClass;
@@ -271,12 +271,12 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TOOLBAR;
-//            case OVERFLOW_BUTTON: //Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TOOLBAR;
+            case OVERFLOW_BUTTON: //Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/Tooltip.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/Tooltip.java	Mon Jun 23 20:04:23 2014 -0700
@@ -59,8 +59,8 @@
 import javafx.scene.Node;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseEvent;
@@ -655,12 +655,12 @@
     private final class CSSBridge extends PopupControl.CSSBridge {
         private Tooltip tooltip = Tooltip.this;
 
-//        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//            switch (attribute) {
-//                case ROLE: return Role.TOOLTIP;
-//                default: return super.accGetAttribute(attribute, parameters);
-//            }
-//        }
+        @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+            switch (attribute) {
+                case ROLE: return Role.TOOLTIP;
+                default: return super.accGetAttribute(attribute, parameters);
+            }
+        }
     }
 
 
--- a/modules/controls/src/main/java/javafx/scene/control/TreeCell.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TreeCell.java	Mon Jun 23 20:04:23 2014 -0700
@@ -43,9 +43,9 @@
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.beans.value.WeakChangeListener;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 /**
  * The {@link Cell} type used with the {@link TreeView} control. In addition to 
@@ -162,7 +162,7 @@
             pseudoClassStateChanged(EXPANDED_PSEUDOCLASS_STATE,   isExpanded);
             pseudoClassStateChanged(COLLAPSED_PSEUDOCLASS_STATE, !isExpanded);
             if (isExpanded != oldIsExpanded) {
-//                accSendNotification(Attribute.EXPANDED);
+                accSendNotification(Attribute.EXPANDED);
             }
             oldIsExpanded = isExpanded;
         }
@@ -637,74 +637,74 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        TreeItem<T> treeItem = getTreeItem();
-//        TreeView<T> treeView = getTreeView();
-//        switch (attribute) {
-//            case ROLE: return Role.TREE_ITEM;
-//            case TREE_ITEM_PARENT: {
-//                if (treeView == null) return null;
-//                if (treeItem == null) return null;
-//                TreeItem<T> parent = treeItem.getParent();
-//                if (parent == null) return null;
-//                int parentIndex = treeView.getRow(parent);
-//                return treeView.accGetAttribute(Attribute.ROW_AT_INDEX, parentIndex);
-//            }
-//            case TREE_ITEM_COUNT: {
-//                return treeItem == null  ? 0 : treeItem.getChildren().size();
-//            }
-//            case TREE_ITEM_AT_INDEX:
-//                if (treeItem == null) return null;
-//                int index = (Integer)parameters[0];
-//                if (index >= treeItem.getChildren().size()) return null;
-//                TreeItem<T> child = treeItem.getChildren().get(index);
-//                if (child == null) return null;
-//                int childIndex = treeView.getRow(child);
-//                return treeView.accGetAttribute(Attribute.ROW_AT_INDEX, childIndex);
-//            case TITLE: {
-//                Object value = treeItem == null ? null : treeItem.getValue();
-//                return value == null ? "" : value.toString();
-//            }
-//            case LEAF: return treeItem == null ? true : treeItem.isLeaf();
-//            case EXPANDED: return treeItem == null ? false : treeItem.isExpanded();
-//            case INDEX: return getIndex();
-//            case SELECTED: return isSelected();
-//            case DISCLOSURE_LEVEL: {
-//                return treeView == null ? 0 : treeView.getTreeItemLevel(treeItem);
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final TreeView<T> treeView = getTreeView();
-//        final TreeItem<T> treeItem = getTreeItem();
-//        final MultipleSelectionModel<TreeItem<T>> sm = treeView == null ? null : treeView.getSelectionModel();
-//
-//        switch (action) {
-//            case EXPAND: {
-//                if (treeItem != null) treeItem.setExpanded(true);
-//                break;
-//            }
-//            case COLLAPSE: {
-//                if (treeItem != null) treeItem.setExpanded(false);
-//                break;
-//            }
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        TreeItem<T> treeItem = getTreeItem();
+        TreeView<T> treeView = getTreeView();
+        switch (attribute) {
+            case ROLE: return Role.TREE_ITEM;
+            case TREE_ITEM_PARENT: {
+                if (treeView == null) return null;
+                if (treeItem == null) return null;
+                TreeItem<T> parent = treeItem.getParent();
+                if (parent == null) return null;
+                int parentIndex = treeView.getRow(parent);
+                return treeView.accGetAttribute(Attribute.ROW_AT_INDEX, parentIndex);
+            }
+            case TREE_ITEM_COUNT: {
+                return treeItem == null  ? 0 : treeItem.getChildren().size();
+            }
+            case TREE_ITEM_AT_INDEX:
+                if (treeItem == null) return null;
+                int index = (Integer)parameters[0];
+                if (index >= treeItem.getChildren().size()) return null;
+                TreeItem<T> child = treeItem.getChildren().get(index);
+                if (child == null) return null;
+                int childIndex = treeView.getRow(child);
+                return treeView.accGetAttribute(Attribute.ROW_AT_INDEX, childIndex);
+            case TITLE: {
+                Object value = treeItem == null ? null : treeItem.getValue();
+                return value == null ? "" : value.toString();
+            }
+            case LEAF: return treeItem == null ? true : treeItem.isLeaf();
+            case EXPANDED: return treeItem == null ? false : treeItem.isExpanded();
+            case INDEX: return getIndex();
+            case SELECTED: return isSelected();
+            case DISCLOSURE_LEVEL: {
+                return treeView == null ? 0 : treeView.getTreeItemLevel(treeItem);
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final TreeView<T> treeView = getTreeView();
+        final TreeItem<T> treeItem = getTreeItem();
+        final MultipleSelectionModel<TreeItem<T>> sm = treeView == null ? null : treeView.getSelectionModel();
+
+        switch (action) {
+            case EXPAND: {
+                if (treeItem != null) treeItem.setExpanded(true);
+                break;
+            }
+            case COLLAPSE: {
+                if (treeItem != null) treeItem.setExpanded(false);
+                break;
+            }
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TreeTableCell.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TreeTableCell.java	Mon Jun 23 20:04:23 2014 -0700
@@ -38,9 +38,9 @@
 import javafx.beans.property.ReadOnlyObjectProperty;
 import javafx.beans.property.ReadOnlyObjectWrapper;
 
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.TreeTableColumn.CellEditEvent;
 
 
@@ -773,37 +773,37 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TREE_TABLE_CELL;
-//            case TITLE: return getText();
-//            case ROW_INDEX: return getIndex();
-//            case COLUMN_INDEX: return columnIndex;
-//            case SELECTED: return isInCellSelectionMode() ? isSelected() : getTreeTableRow().isSelected();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final TreeTableView<S> treeTableView = getTreeTableView();
-//        final TreeTableView.TreeTableViewSelectionModel<S> sm = treeTableView == null ? null : treeTableView.getSelectionModel();
-//
-//        switch (action) {
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex(), getTableColumn());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex(), getTableColumn());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex(), getTableColumn());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TREE_TABLE_CELL;
+            case TITLE: return getText();
+            case ROW_INDEX: return getIndex();
+            case COLUMN_INDEX: return columnIndex;
+            case SELECTED: return isInCellSelectionMode() ? isSelected() : getTreeTableRow().isSelected();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final TreeTableView<S> treeTableView = getTreeTableView();
+        final TreeTableView.TreeTableViewSelectionModel<S> sm = treeTableView == null ? null : treeTableView.getSelectionModel();
+
+        switch (action) {
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex(), getTableColumn());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex(), getTableColumn());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex(), getTableColumn());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TreeTableRow.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TreeTableRow.java	Mon Jun 23 20:04:23 2014 -0700
@@ -41,9 +41,9 @@
 import javafx.collections.ListChangeListener;
 import javafx.collections.WeakListChangeListener;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.TreeTableView.TreeTableViewFocusModel;
 import javafx.scene.control.TreeTableView.TreeTableViewSelectionModel;
 
@@ -523,82 +523,82 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        final TreeItem<T> treeItem = getTreeItem();
-//        final TreeTableView<T> treeTableView = getTreeTableView();
-//        final List<TreeTableColumn<T,?>> visibleColumns = treeTableView.getVisibleLeafColumns();
-//
-//        TreeTableColumn<T,?> treeColumn = treeTableView.getTreeColumn();
-//        treeColumn = treeColumn != null ? treeColumn :
-//                    !visibleColumns.isEmpty() ? visibleColumns.get(0) :
-//                    null;
-//
-//        switch (attribute) {
-//            case ROLE: return Role.TREE_TABLE_ITEM;
-//            case TREE_ITEM_PARENT: {
-//                if (treeItem == null) return null;
-//                TreeItem<T> parent = treeItem.getParent();
-//                if (parent == null) return null;
-//                int parentIndex = treeTableView.getRow(parent);
-//                return treeTableView.accGetAttribute(Attribute.ROW_AT_INDEX, parentIndex);
-//            }
-//            case TREE_ITEM_COUNT: {
-//                return treeItem == null  ? 0 : treeItem.getChildren().size();
-//            }
-//            case TREE_ITEM_AT_INDEX:
-//                if (treeItem == null) return null;
-//                int index = (Integer)parameters[0];
-//                if (index >= treeItem.getChildren().size()) return null;
-//                TreeItem<T> child = treeItem.getChildren().get(index);
-//                if (child == null) return null;
-//                int childIndex = treeTableView.getRow(child);
-//                return treeTableView.accGetAttribute(Attribute.ROW_AT_INDEX, childIndex);
-//            case TITLE: {
-//                if (treeItem == null) return "";
-//                return treeColumn.getCellData(treeItem);
-//            }
-//            case ROW_INDEX: return getIndex();
-//            case COLUMN_INDEX: return visibleColumns.indexOf(treeColumn);
-//            case LEAF: return treeItem == null ? true : treeItem.isLeaf();
-//            case EXPANDED: return treeItem == null ? false : treeItem.isExpanded();
-//            case INDEX: return getIndex();
-//            case SELECTED: return isSelected();
-//            case DISCLOSURE_LEVEL: {
-//                return treeTableView == null ? 0 : treeTableView.getTreeItemLevel(treeItem);
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        final TreeTableView<T> treeTableView = getTreeTableView();
-//        final TreeItem<T> treeItem = getTreeItem();
-//        final TreeTableView.TreeTableViewSelectionModel<T> sm = treeTableView == null ? null : treeTableView.getSelectionModel();
-//
-//        switch (action) {
-//            case EXPAND: {
-//                if (treeItem != null) treeItem.setExpanded(true);
-//                break;
-//            }
-//            case COLLAPSE: {
-//                if (treeItem != null) treeItem.setExpanded(false);
-//                break;
-//            }
-//            case SELECT: {
-//                if (sm != null) sm.clearAndSelect(getIndex());
-//                break;
-//            }
-//            case ADD_TO_SELECTION: {
-//                if (sm != null) sm.select(getIndex());
-//                break;
-//            }
-//            case REMOVE_FROM_SELECTION: {
-//                if (sm != null) sm.clearSelection(getIndex());
-//                break;
-//            }
-//            default: super.accExecuteAction(action);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        final TreeItem<T> treeItem = getTreeItem();
+        final TreeTableView<T> treeTableView = getTreeTableView();
+        final List<TreeTableColumn<T,?>> visibleColumns = treeTableView.getVisibleLeafColumns();
+
+        TreeTableColumn<T,?> treeColumn = treeTableView.getTreeColumn();
+        treeColumn = treeColumn != null ? treeColumn :
+                    !visibleColumns.isEmpty() ? visibleColumns.get(0) :
+                    null;
+
+        switch (attribute) {
+            case ROLE: return Role.TREE_TABLE_ITEM;
+            case TREE_ITEM_PARENT: {
+                if (treeItem == null) return null;
+                TreeItem<T> parent = treeItem.getParent();
+                if (parent == null) return null;
+                int parentIndex = treeTableView.getRow(parent);
+                return treeTableView.accGetAttribute(Attribute.ROW_AT_INDEX, parentIndex);
+            }
+            case TREE_ITEM_COUNT: {
+                return treeItem == null  ? 0 : treeItem.getChildren().size();
+            }
+            case TREE_ITEM_AT_INDEX:
+                if (treeItem == null) return null;
+                int index = (Integer)parameters[0];
+                if (index >= treeItem.getChildren().size()) return null;
+                TreeItem<T> child = treeItem.getChildren().get(index);
+                if (child == null) return null;
+                int childIndex = treeTableView.getRow(child);
+                return treeTableView.accGetAttribute(Attribute.ROW_AT_INDEX, childIndex);
+            case TITLE: {
+                if (treeItem == null) return "";
+                return treeColumn.getCellData(treeItem);
+            }
+            case ROW_INDEX: return getIndex();
+            case COLUMN_INDEX: return visibleColumns.indexOf(treeColumn);
+            case LEAF: return treeItem == null ? true : treeItem.isLeaf();
+            case EXPANDED: return treeItem == null ? false : treeItem.isExpanded();
+            case INDEX: return getIndex();
+            case SELECTED: return isSelected();
+            case DISCLOSURE_LEVEL: {
+                return treeTableView == null ? 0 : treeTableView.getTreeItemLevel(treeItem);
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        final TreeTableView<T> treeTableView = getTreeTableView();
+        final TreeItem<T> treeItem = getTreeItem();
+        final TreeTableView.TreeTableViewSelectionModel<T> sm = treeTableView == null ? null : treeTableView.getSelectionModel();
+
+        switch (action) {
+            case EXPAND: {
+                if (treeItem != null) treeItem.setExpanded(true);
+                break;
+            }
+            case COLLAPSE: {
+                if (treeItem != null) treeItem.setExpanded(false);
+                break;
+            }
+            case SELECT: {
+                if (sm != null) sm.clearAndSelect(getIndex());
+                break;
+            }
+            case ADD_TO_SELECTION: {
+                if (sm != null) sm.select(getIndex());
+                break;
+            }
+            case REMOVE_FROM_SELECTION: {
+                if (sm != null) sm.clearSelection(getIndex());
+                break;
+            }
+            default: super.accExecuteAction(action);
+        }
+    }
 }
--- a/modules/controls/src/main/java/javafx/scene/control/TreeTableView.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TreeTableView.java	Mon Jun 23 20:04:23 2014 -0700
@@ -75,9 +75,9 @@
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.layout.Region;
 import javafx.util.Callback;
 
@@ -1902,65 +1902,65 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TREE_TABLE_VIEW;
-//
-//            case TREE_ITEM_COUNT:
-//            case ROW_COUNT: return getExpandedItemCount();
-//            case COLUMN_COUNT: return getVisibleLeafColumns().size();
-//
-//            /*
-//             * TreeTableViewSkin returns TreeTableRows back to TreeTableView.
-//             * TreeTableRowSkin returns TreeTableCells back to TreeTableRow.
-//             */
-//            case SELECTED_CELLS: {
-//                ObservableList<TreeTableRow<S>> rows = (ObservableList<TreeTableRow<S>>)super.accGetAttribute(attribute, parameters);
-//                List<Node> selection = new ArrayList<>();
-//                for (TreeTableRow<S> row : rows) {
-//                    ObservableList<Node> cells = (ObservableList<Node>)row.accGetAttribute(attribute, parameters);
-//                    if (cells != null) selection.addAll(cells);
-//                }
-//                return FXCollections.observableArrayList(selection);
-//            }
-//            case FOCUS_ITEM: {
-//                Node row = (Node)super.accGetAttribute(attribute, parameters);
-//                if (row == null) return null;
-//                Node cell = (Node)row.accGetAttribute(attribute, parameters);
-//                /* cell equals to null means the row is a placeholder node */
-//                return cell != null ?  cell : row;
-//            }
-//            case CELL_AT_ROW_COLUMN: {
-//                TreeTableRow<S> row = (TreeTableRow<S>)super.accGetAttribute(attribute, parameters);
-//                return row != null ? row.accGetAttribute(attribute, parameters) : null;
-//            }
-//            case MULTIPLE_SELECTION: {
-//                TreeTableViewSelectionModel<S> sm = getSelectionModel();
-//                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
-//            }
-//
-//            case COLUMN_INDEX: //Skin
-//            case HEADER: //Skin
-//            case ROW_AT_INDEX: //Skin
-//            case VERTICAL_SCROLLBAR: //Skin
-//            case HORIZONTAL_SCROLLBAR: // Skin
-//
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SCROLL_TO_INDEX: {
-//                int index = (int) parameters[0];
-//                scrollTo(index);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TREE_TABLE_VIEW;
+
+            case TREE_ITEM_COUNT:
+            case ROW_COUNT: return getExpandedItemCount();
+            case COLUMN_COUNT: return getVisibleLeafColumns().size();
+
+            /*
+             * TreeTableViewSkin returns TreeTableRows back to TreeTableView.
+             * TreeTableRowSkin returns TreeTableCells back to TreeTableRow.
+             */
+            case SELECTED_CELLS: {
+                ObservableList<TreeTableRow<S>> rows = (ObservableList<TreeTableRow<S>>)super.accGetAttribute(attribute, parameters);
+                List<Node> selection = new ArrayList<>();
+                for (TreeTableRow<S> row : rows) {
+                    ObservableList<Node> cells = (ObservableList<Node>)row.accGetAttribute(attribute, parameters);
+                    if (cells != null) selection.addAll(cells);
+                }
+                return FXCollections.observableArrayList(selection);
+            }
+            case FOCUS_ITEM: {
+                Node row = (Node)super.accGetAttribute(attribute, parameters);
+                if (row == null) return null;
+                Node cell = (Node)row.accGetAttribute(attribute, parameters);
+                /* cell equals to null means the row is a placeholder node */
+                return cell != null ?  cell : row;
+            }
+            case CELL_AT_ROW_COLUMN: {
+                TreeTableRow<S> row = (TreeTableRow<S>)super.accGetAttribute(attribute, parameters);
+                return row != null ? row.accGetAttribute(attribute, parameters) : null;
+            }
+            case MULTIPLE_SELECTION: {
+                TreeTableViewSelectionModel<S> sm = getSelectionModel();
+                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
+            }
+
+            case COLUMN_INDEX: //Skin
+            case HEADER: //Skin
+            case ROW_AT_INDEX: //Skin
+            case VERTICAL_SCROLLBAR: //Skin
+            case HORIZONTAL_SCROLLBAR: // Skin
+
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SCROLL_TO_INDEX: {
+                int index = (int) parameters[0];
+                scrollTo(index);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 
 
 
@@ -2937,7 +2937,7 @@
             setSelectedItem(getModelItem(row));
 
             /* Does this get all the change events ? */
-//            getTreeTableView().accSendNotification(Attribute.SELECTED_CELLS);
+            getTreeTableView().accSendNotification(Attribute.SELECTED_CELLS);
         }
         
         @Override public void focus(int row) {
--- a/modules/controls/src/main/java/javafx/scene/control/TreeView.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/controls/src/main/java/javafx/scene/control/TreeView.java	Mon Jun 23 20:04:23 2014 -0700
@@ -52,9 +52,9 @@
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.event.WeakEventHandler;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.control.TreeItem.TreeModificationEvent;
 import javafx.scene.layout.Region;
 import javafx.util.Callback;
@@ -1110,34 +1110,34 @@
      *                                                                         *
      **************************************************************************/
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TREE_VIEW;
-//            case MULTIPLE_SELECTION: {
-//                MultipleSelectionModel<TreeItem<T>> sm = getSelectionModel();
-//                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
-//            }
-//            case ROW_COUNT: return getExpandedItemCount();
-//            case ROW_AT_INDEX: //Skin
-//            case SELECTED_ROWS: //Skin
-//            case VERTICAL_SCROLLBAR: //Skin
-//            case HORIZONTAL_SCROLLBAR: // Skin
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    /** @treatAsPrivate */
-//    @Override public void accExecuteAction(Action action, Object... parameters) {
-//        switch (action) {
-//            case SCROLL_TO_INDEX: {
-//                int index = (int) parameters[0];
-//                scrollTo(index);
-//                break;
-//            }
-//            default: super.accExecuteAction(action, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TREE_VIEW;
+            case MULTIPLE_SELECTION: {
+                MultipleSelectionModel<TreeItem<T>> sm = getSelectionModel();
+                return sm != null && sm.getSelectionMode() == SelectionMode.MULTIPLE;
+            }
+            case ROW_COUNT: return getExpandedItemCount();
+            case ROW_AT_INDEX: //Skin
+            case SELECTED_ROWS: //Skin
+            case VERTICAL_SCROLLBAR: //Skin
+            case HORIZONTAL_SCROLLBAR: // Skin
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    /** @treatAsPrivate */
+    @Override public void accExecuteAction(Action action, Object... parameters) {
+        switch (action) {
+            case SCROLL_TO_INDEX: {
+                int index = (int) parameters[0];
+                scrollTo(index);
+                break;
+            }
+            default: super.accExecuteAction(action, parameters);
+        }
+    }
 
 
 
@@ -1445,7 +1445,7 @@
             }
 
             // FIXME this is not the correct location for fire selection events (and does not take into account multiple selection)
-//            treeView.accSendNotification(Attribute.SELECTED_ROWS);
+            treeView.accSendNotification(Attribute.SELECTED_ROWS);
         }
 
         /** {@inheritDoc} */
--- a/modules/graphics/src/main/java/com/sun/glass/ui/Application.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/Application.java	Mon Jun 23 20:04:23 2014 -0700
@@ -39,7 +39,7 @@
 import java.util.Map;
 import java.util.LinkedList;
 
-import com.sun.javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 
 public abstract class Application {
 
--- a/modules/graphics/src/main/java/com/sun/glass/ui/PlatformAccessible.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/PlatformAccessible.java	Mon Jun 23 20:04:23 2014 -0700
@@ -25,13 +25,13 @@
 
 package com.sun.glass.ui;
 
-import static com.sun.javafx.scene.accessibility.Attribute.PARENT;
-import static com.sun.javafx.scene.accessibility.Attribute.ROLE;
+import static javafx.scene.accessibility.Attribute.PARENT;
+import static javafx.scene.accessibility.Attribute.ROLE;
 import javafx.scene.Node;
-import com.sun.javafx.scene.accessibility.Accessible;
-import com.sun.javafx.scene.accessibility.Action;
-import com.sun.javafx.scene.accessibility.Attribute;
-import com.sun.javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 public abstract class PlatformAccessible {
 
@@ -72,7 +72,7 @@
     @SuppressWarnings("deprecation")
     protected long getAccessible(Node node) {
         if (node == null) return 0L;
-        Accessible acc = null;//node.getAccessible();
+        Accessible acc = node.getAccessible();
         if (acc == null) return 0L;
         PlatformAccessible pAcc = acc.impl_getDelegate();
         return pAcc != null ? pAcc.getNativeAccessible() : 0;
@@ -80,7 +80,7 @@
 
     protected Node getContainerNode(Node node, Role targetRole) {
         while (node != null) {
-            Accessible acc = null;//node.getAccessible();
+            Accessible acc = node.getAccessible();
             Role role = (Role)acc.getAttribute(ROLE);
             if (role == targetRole) return node;
             node = (Node)acc.getAttribute(PARENT);
--- a/modules/graphics/src/main/java/com/sun/glass/ui/View.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/View.java	Mon Jun 23 20:04:23 2014 -0700
@@ -31,7 +31,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Map;
-import com.sun.javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 
 public abstract class View {
 
--- a/modules/graphics/src/main/java/com/sun/glass/ui/mac/MacAccessible.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/mac/MacAccessible.java	Mon Jun 23 20:04:23 2014 -0700
@@ -37,10 +37,10 @@
 import javafx.geometry.Orientation;
 import javafx.scene.Scene;
 import javafx.scene.Node;
-import com.sun.javafx.scene.accessibility.Accessible;
-import com.sun.javafx.scene.accessibility.Action;
-import com.sun.javafx.scene.accessibility.Attribute;
-import com.sun.javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.input.KeyCharacterCombination;
 import javafx.scene.input.KeyCode;
 import javafx.scene.input.KeyCodeCombination;
@@ -49,7 +49,7 @@
 import com.sun.glass.ui.PlatformAccessible;
 import com.sun.glass.ui.Screen;
 import com.sun.glass.ui.View;
-import static com.sun.javafx.scene.accessibility.Attribute.*;
+import static javafx.scene.accessibility.Attribute.*;
 
 /**
  * Native Interface - Implements NSAccessibility Protocol
@@ -60,28 +60,28 @@
     private native static void _initIDs();
     private native static boolean _initEnum(String enumName);
     static {
-//        _initIDs();
-//        if (!_initEnum("MacAttribute")) {
-//            System.err.println("Fail linking MacAttribute");
-//        }
-//        if (!_initEnum("MacAction")) {
-//            System.err.println("Fail linking MacAction");
-//        }
-//        if (!_initEnum("MacRole")) {
-//            System.err.println("Fail linking MacRole");
-//        }
-//        if (!_initEnum("MacSubrole")) {
-//            System.err.println("Fail linking MacSubrole");
-//        }
-//        if (!_initEnum("MacNotification")) {
-//            System.err.println("Fail linking MacNotification");
-//        }
-//        if (!_initEnum("MacOrientation")) {
-//            System.err.println("Fail linking MacOrientation");
-//        }
-//        if (!_initEnum("MacText")) {
-//            System.err.println("Fail linking MacText");
-//        }
+        _initIDs();
+        if (!_initEnum("MacAttribute")) {
+            System.err.println("Fail linking MacAttribute");
+        }
+        if (!_initEnum("MacAction")) {
+            System.err.println("Fail linking MacAction");
+        }
+        if (!_initEnum("MacRole")) {
+            System.err.println("Fail linking MacRole");
+        }
+        if (!_initEnum("MacSubrole")) {
+            System.err.println("Fail linking MacSubrole");
+        }
+        if (!_initEnum("MacNotification")) {
+            System.err.println("Fail linking MacNotification");
+        }
+        if (!_initEnum("MacOrientation")) {
+            System.err.println("Fail linking MacOrientation");
+        }
+        if (!_initEnum("MacText")) {
+            System.err.println("Fail linking MacText");
+        }
     }
 
     static enum MacAttribute {
@@ -650,11 +650,10 @@
     }
 
     static MacAccessible createAccessible(Accessible accessible) {
-//        if (accessible == null) return null;
-//        MacAccessible macAccessible = new MacAccessible(accessible);
-//        if (macAccessible.peer == 0L) return null;
-//        return macAccessible;
-        return null;
+        if (accessible == null) return null;
+        MacAccessible macAccessible = new MacAccessible(accessible);
+        if (macAccessible.peer == 0L) return null;
+        return macAccessible;
     }
 
     @Override
@@ -700,7 +699,7 @@
                      */
                     Scene scene = (Scene)getAttribute(SCENE);
                     if (scene != null) {
-                        Accessible acc = null;//scene.getAccessible();
+                        Accessible acc = scene.getAccessible();
                         if (acc != null) {
                             node = (Node)acc.getAttribute(FOCUS_NODE);
                         }
@@ -709,7 +708,7 @@
 
                 long id = 0L;
                 if (node != null) {
-                    Node item = null;//(Node)node.getAccessible().getAttribute(FOCUS_ITEM);
+                    Node item = (Node)node.getAccessible().getAttribute(FOCUS_ITEM);
                     id = item != null ? getAccessible(item) : getAccessible(node);
                 } else {
                     /* 
@@ -794,7 +793,7 @@
     @SuppressWarnings("deprecation")
     private View getRootView(Scene scene) {
         if (scene == null) return null;
-        Accessible acc = null;//scene.getAccessible();
+        Accessible acc = scene.getAccessible();
         if (acc == null) return null;
         MacAccessible macAcc = (MacAccessible)acc.impl_getDelegate();
         if (macAcc == null || macAcc.isDisposed()) return null;
@@ -846,7 +845,7 @@
         if (role == Role.TEXT) {
             Node parent = (Node)getAttribute(PARENT);
             if (parent == null) return ignoreInnerText;
-            Role parentRole = null;//(Role)parent.getAccessible().getAttribute(ROLE);
+            Role parentRole = (Role)parent.getAccessible().getAttribute(ROLE);
             if (parentRole == null) return ignoreInnerText;
             switch (parentRole) {
                 case BUTTON:
@@ -1169,26 +1168,26 @@
                     if (role == Role.CONTEXT_MENU) {
                         Scene scene = (Scene)getAttribute(SCENE);
                         if (scene != null) {
-//                            Accessible acc = scene.getAccessible();
-//                            if (acc != null) {
-//                                Node focus = (Node)acc.getAttribute(FOCUS_NODE);
-//                                if (focus != null && focus.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
-//                                    long[] result = {getAccessible(focus)};
-//                                    return attr.map.apply(result);
-//                                } else {
-//                                    return null;
-//                                }
-//                            }
+                            Accessible acc = scene.getAccessible();
+                            if (acc != null) {
+                                Node focus = (Node)acc.getAttribute(FOCUS_NODE);
+                                if (focus != null && focus.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
+                                    long[] result = {getAccessible(focus)};
+                                    return attr.map.apply(result);
+                                } else {
+                                    return null;
+                                }
+                            }
                         }
                     }
                     if (role == Role.MENU_BAR) {
                         Node focus = (Node)getAttribute(FOCUS_NODE);
-//                        if (focus != null && focus.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
-//                            long[] result = {getAccessible(focus)};
-//                            return attr.map.apply(result);
-//                        } else {
-//                            return null;
-//                        }
+                        if (focus != null && focus.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
+                            long[] result = {getAccessible(focus)};
+                            return attr.map.apply(result);
+                        } else {
+                            return null;
+                        }
                     }
                     return null;
                 }
@@ -1283,9 +1282,9 @@
                     if (role == Role.CONTEXT_MENU) {
                         Node menuItem = (Node)getAttribute(MENU_FOR);
                         if (menuItem != null) {
-//                            if (menuItem.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
-//                                result = menuItem;
-//                            }
+                            if (menuItem.getAccessible().getAttribute(ROLE) == Role.MENU_ITEM) {
+                                result = menuItem;
+                            }
                         }
                     }
                     result = getAccessible((Node)result);
@@ -1357,17 +1356,17 @@
                          */
                         Node parent = (Node)getAttribute(PARENT);
                         if (parent == null) return null;
-//                        Accessible acc = parent.getAccessible();
-//                        if (acc.getAttribute(ROLE) == Role.TREE_TABLE_ITEM) {
-//                            Stream<Node> children = ((List<Node>)acc.getAttribute(CHILDREN)).stream();
-//
-//                            result = children.map(n -> n.getAccessible())
-//                                             .filter(a -> a.getAttribute(ROLE) == Role.TREE_TABLE_CELL)
-//                                             .map(a -> (String)a.getAttribute(TITLE))
-//                                             .filter(t -> t != null && !t.isEmpty()) //Consider reporting empty cells as "(blank)"
-//                                             .reduce((s1, s2) -> s1 + " " + s2)
-//                                             .orElse("");
-//                        }
+                        Accessible acc = parent.getAccessible();
+                        if (acc.getAttribute(ROLE) == Role.TREE_TABLE_ITEM) {
+                            Stream<Node> children = ((List<Node>)acc.getAttribute(CHILDREN)).stream();
+
+                            result = children.map(n -> n.getAccessible())
+                                             .filter(a -> a.getAttribute(ROLE) == Role.TREE_TABLE_CELL)
+                                             .map(a -> (String)a.getAttribute(TITLE))
+                                             .filter(t -> t != null && !t.isEmpty()) //Consider reporting empty cells as "(blank)"
+                                             .reduce((s1, s2) -> s1 + " " + s2)
+                                             .orElse("");
+                        }
                         break;
                     }
                     default:
@@ -1776,7 +1775,7 @@
         Node node = (Node)getAttribute(FOCUS_NODE);
         if (node == null) return 0L;
 
-        Node item = null;//(Node)node.getAccessible().getAttribute(FOCUS_ITEM);
+        Node item = (Node)node.getAccessible().getAttribute(FOCUS_ITEM);
         if (item != null) return getAccessible(item);
         return getAccessible(node);
     }
--- a/modules/graphics/src/main/java/com/sun/glass/ui/mac/MacApplication.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/mac/MacApplication.java	Mon Jun 23 20:04:23 2014 -0700
@@ -40,7 +40,7 @@
 import java.util.List;
 import java.util.Map;
 
-import com.sun.javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 
 final class MacApplication extends Application implements InvokeLaterDispatcher.InvokeLaterSubmitter {
 
--- a/modules/graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java	Mon Jun 23 20:04:23 2014 -0700
@@ -31,14 +31,14 @@
 import javafx.geometry.Point2D;
 import javafx.scene.Node;
 import javafx.scene.Scene;
-import com.sun.javafx.scene.accessibility.Accessible;
-import com.sun.javafx.scene.accessibility.Action;
-import com.sun.javafx.scene.accessibility.Attribute;
-import com.sun.javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.input.KeyCombination;
 import com.sun.glass.ui.PlatformAccessible;
 import com.sun.glass.ui.View;
-import static com.sun.javafx.scene.accessibility.Attribute.*;
+import static javafx.scene.accessibility.Attribute.*;
 
 /*
  * This class is the Java peer for GlassAccessible.
@@ -62,7 +62,7 @@
 
     private native static void _initIDs();
     static {
-//        _initIDs();
+        _initIDs();
     }
 
     private static int idCount = 1;
@@ -233,12 +233,11 @@
     }
 
     static WinAccessible createAccessible(Accessible accessible) {
-//        if (accessible == null) return null;
-//        WinAccessible winAccessible = new WinAccessible(accessible);
-//        if (winAccessible.peer == 0L) return null;
-//        winAccessible.id = idCount++;
-//        return winAccessible;
-        return null;
+        if (accessible == null) return null;
+        WinAccessible winAccessible = new WinAccessible(accessible);
+        if (winAccessible.peer == 0L) return null;
+        winAccessible.id = idCount++;
+        return winAccessible;
     }
 
     @Override
@@ -280,10 +279,10 @@
                         // Delegate back to the Scene if the transient focus owner is null
                         Scene scene = (Scene)getAttribute(SCENE);
                         if (scene != null) {
-//                            Accessible acc = scene.getAccessible();
-//                            if (acc != null) {
-//                                acc.sendNotification(FOCUS_NODE);
-//                            }
+                            Accessible acc = scene.getAccessible();
+                            if (acc != null) {
+                                acc.sendNotification(FOCUS_NODE);
+                            }
                         }
                     }
                 }
@@ -735,7 +734,7 @@
                 if (name == null || name.length() == 0) {
                     Node label = (Node)getAttribute(LABELED_BY);
                     if (label != null) {
-//                        name = (String)label.getAccessible().getAttribute(TITLE);
+                        name = (String)label.getAccessible().getAttribute(TITLE);
                     }
                 }
                 if (name == null || name.length() == 0) {
@@ -773,16 +772,16 @@
                 if (Boolean.FALSE.equals(focus)) {
                     Scene scene = (Scene)getAttribute(SCENE);
                     if (scene != null) {
-//                        Accessible acc = scene.getAccessible();
-//                        if (acc != null) {
-//                            Node node = (Node)acc.getAttribute(FOCUS_NODE);
-//                            if (node != null) {
-//                                Node item = (Node)node.getAccessible().getAttribute(FOCUS_ITEM);
-//                                if (getAccessible(item) == peer) {
-//                                    focus = true;
-//                                }
-//                            }
-//                        }
+                        Accessible acc = scene.getAccessible();
+                        if (acc != null) {
+                            Node node = (Node)acc.getAttribute(FOCUS_NODE);
+                            if (node != null) {
+                                Node item = (Node)node.getAccessible().getAttribute(FOCUS_ITEM);
+                                if (getAccessible(item) == peer) {
+                                    focus = true;
+                                }
+                            }
+                        }
                     }
                 }
                 variant = new WinVariant();
@@ -857,7 +856,7 @@
         if (isDisposed()) return 0L;
         Scene scene = (Scene)getAttribute(SCENE);
         if (scene == null) return 0L;
-        Accessible acc = null;//scene.getAccessible();
+        Accessible acc = scene.getAccessible();
         if (acc == null) return 0L;
         WinAccessible winAcc = (WinAccessible)acc.impl_getDelegate();
         if (winAcc == null || winAcc.isDisposed()) return 0L;
@@ -880,7 +879,7 @@
     private long NavigateListView(WinAccessible listItemAccessible, int direction) {
         Node list = listItemAccessible.getContainerNode();
         if (list == null) return 0;
-        Accessible listAccessible = null;//list.getAccessible();
+        Accessible listAccessible = list.getAccessible();
         if (listAccessible == null) return 0;
         Integer count = (Integer)listAccessible.getAttribute(ROW_COUNT);
         if (count == null || count == 0) return 0;
@@ -923,7 +922,7 @@
                         /* scene root node case */
                         Scene scene = (Scene)getAttribute(SCENE);
                         if (scene == null) return 0L;
-                        Accessible acc = null;//scene.getAccessible();
+                        Accessible acc = scene.getAccessible();
                         if (acc == null) return 0L;
                         WinAccessible winAcc = (WinAccessible)acc.impl_getDelegate();
                         if (winAcc == null || winAcc.isDisposed()) return 0L;
@@ -944,7 +943,7 @@
                  * or the root tree item in a tree view. Either way, there is no siblings. 
                  */
                 if (parent != null) {
-                    Accessible parentAccessible = null;//parent.getAccessible();
+                    Accessible parentAccessible = parent.getAccessible();
                     Function<Integer, Node> getChild;
                     int count = 0;
                     if (treeCell) {
@@ -1010,11 +1009,11 @@
                         node = children.get(lastIndex);
                     }
                     if (node != null) {
-//                        role = (Role)node.getAccessible().getAttribute(ROLE);
-//                        if (role == Role.LIST_ITEM) {
-//                            WinAccessible itemAcc = (WinAccessible)node.getAccessible().impl_getDelegate();
-//                            return NavigateListView(itemAcc, direction);
-//                        }
+                        role = (Role)node.getAccessible().getAttribute(ROLE);
+                        if (role == Role.LIST_ITEM) {
+                            WinAccessible itemAcc = (WinAccessible)node.getAccessible().impl_getDelegate();
+                            return NavigateListView(itemAcc, direction);
+                        }
                     }
                 }
                 break;
@@ -1039,7 +1038,7 @@
     long GetFocus() {
         Node node = (Node)getAttribute(FOCUS_NODE);
         if (node == null) return 0L;
-        Node item = null;//(Node)node.getAccessible().getAttribute(FOCUS_ITEM);
+        Node item = (Node)node.getAccessible().getAttribute(FOCUS_ITEM);
         if (item != null) return getAccessible(item);
         return getAccessible(node);
     }
@@ -1441,7 +1440,7 @@
        Node table = null;
        Node node = (Node)getAttribute(PARENT);
        while (node != null) {
-           Accessible acc = null;//node.getAccessible();
+           Accessible acc = node.getAccessible();
            Role role = (Role)acc.getAttribute(ROLE);
            if (role == Role.TABLE_VIEW || role == Role.TREE_TABLE_VIEW) {
                table = node;
@@ -1450,7 +1449,7 @@
            node = (Node)acc.getAttribute(PARENT);
        }
        if (table == null) return null;
-       Node column = null;//(Node)table.getAccessible().getAttribute(COLUMN_AT_INDEX, columnIndex);
+       Node column = (Node)table.getAccessible().getAttribute(COLUMN_AT_INDEX, columnIndex);
        return new long[] {getAccessible(column)};
     }
 
@@ -1486,7 +1485,7 @@
         if (role == Role.TOOLBAR) {
             Node button = (Node)getAttribute(OVERFLOW_BUTTON);
             if (button != null) {
-//                button.getAccessible().executeAction(Action.FIRE);
+                button.getAccessible().executeAction(Action.FIRE);
             }
             return;
         }
@@ -1499,7 +1498,7 @@
         if (role == Role.TOOLBAR) {
             Node button = (Node)getAttribute(OVERFLOW_BUTTON);
             if (button != null) {
-//                button.getAccessible().executeAction(Action.FIRE);
+                button.getAccessible().executeAction(Action.FIRE);
             }
             return;
         }
@@ -1513,8 +1512,8 @@
         if (role == Role.TOOLBAR) {
             Node button = (Node)getAttribute(OVERFLOW_BUTTON);
             if (button != null) {
-//                boolean visible = Boolean.TRUE.equals(button.getAccessible().getAttribute(VISIBLE));
-//                return visible ? ExpandCollapseState_Collapsed : ExpandCollapseState_Expanded;
+                boolean visible = Boolean.TRUE.equals(button.getAccessible().getAttribute(VISIBLE));
+                return visible ? ExpandCollapseState_Collapsed : ExpandCollapseState_Expanded;
             }
         }
 
@@ -1571,43 +1570,43 @@
         /* dealing with vertical scroll first */
         if (get_VerticallyScrollable()) {
             Node vsb = (Node)getAttribute(VERTICAL_SCROLLBAR);
-//            Accessible vsba = vsb.getAccessible();
-//            switch (verticalAmount) {
-//                case ScrollAmount_LargeIncrement:
-//                    vsba.executeAction(Action.BLOCK_INCREMENT);
-//                    break;
-//                case ScrollAmount_SmallIncrement:
-//                    vsba.executeAction(Action.INCREMENT);
-//                    break;
-//                case ScrollAmount_LargeDecrement:
-//                    vsba.executeAction(Action.BLOCK_DECREMENT);
-//                    break;
-//                case ScrollAmount_SmallDecrement:
-//                    vsba.executeAction(Action.DECREMENT);
-//                    break;
-//                default:
-//            }
+            Accessible vsba = vsb.getAccessible();
+            switch (verticalAmount) {
+                case ScrollAmount_LargeIncrement:
+                    vsba.executeAction(Action.BLOCK_INCREMENT);
+                    break;
+                case ScrollAmount_SmallIncrement:
+                    vsba.executeAction(Action.INCREMENT);
+                    break;
+                case ScrollAmount_LargeDecrement:
+                    vsba.executeAction(Action.BLOCK_DECREMENT);
+                    break;
+                case ScrollAmount_SmallDecrement:
+                    vsba.executeAction(Action.DECREMENT);
+                    break;
+                default:
+            }
         }
 
         /* now dealing with horizontal scroll */
         if (get_HorizontallyScrollable()) {
             Node hsb = (Node)getAttribute(HORIZONTAL_SCROLLBAR);
-//            Accessible hsba = hsb.getAccessible();
-//            switch (horizontalAmount) {
-//                case ScrollAmount_LargeIncrement:
-//                    hsba.executeAction(Action.BLOCK_INCREMENT);
-//                    break;
-//                case ScrollAmount_SmallIncrement:
-//                    hsba.executeAction(Action.INCREMENT);
-//                    break;
-//                case ScrollAmount_LargeDecrement:
-//                    hsba.executeAction(Action.BLOCK_DECREMENT);
-//                    break;
-//                case ScrollAmount_SmallDecrement:
-//                    hsba.executeAction(Action.DECREMENT);
-//                    break;
-//                default:
-//            }
+            Accessible hsba = hsb.getAccessible();
+            switch (horizontalAmount) {
+                case ScrollAmount_LargeIncrement:
+                    hsba.executeAction(Action.BLOCK_INCREMENT);
+                    break;
+                case ScrollAmount_SmallIncrement:
+                    hsba.executeAction(Action.INCREMENT);
+                    break;
+                case ScrollAmount_LargeDecrement:
+                    hsba.executeAction(Action.BLOCK_DECREMENT);
+                    break;
+                case ScrollAmount_SmallDecrement:
+                    hsba.executeAction(Action.DECREMENT);
+                    break;
+                default:
+            }
         }
     }
 
@@ -1617,21 +1616,21 @@
         /* dealing with vertical scroll first */
         if (verticalPercent != UIA_ScrollPatternNoScroll && get_VerticallyScrollable()) {
             Node vsb = (Node)getAttribute(VERTICAL_SCROLLBAR);
-//            Double min = (Double)vsb.getAccessible().getAttribute(MIN_VALUE);
-//            Double max = (Double)vsb.getAccessible().getAttribute(MAX_VALUE);
-//            if (min != null && max != null) {
-//                vsb.getAccessible().executeAction(Action.SET_VALUE, (max-min)*(verticalPercent/100)+min);
-//            }
+            Double min = (Double)vsb.getAccessible().getAttribute(MIN_VALUE);
+            Double max = (Double)vsb.getAccessible().getAttribute(MAX_VALUE);
+            if (min != null && max != null) {
+                vsb.getAccessible().executeAction(Action.SET_VALUE, (max-min)*(verticalPercent/100)+min);
+            }
         }
 
         /* now dealing with horizontal scroll */
         if (horizontalPercent != UIA_ScrollPatternNoScroll && get_HorizontallyScrollable()) {
             Node hsb = (Node)getAttribute(HORIZONTAL_SCROLLBAR);
-//            Double min = (Double)hsb.getAccessible().getAttribute(MIN_VALUE);
-//            Double max = (Double)hsb.getAccessible().getAttribute(MAX_VALUE);
-//            if (min != null && max != null) {
-//                hsb.getAccessible().executeAction(Action.SET_VALUE, (max-min)*(horizontalPercent/100)+min);
-//            }
+            Double min = (Double)hsb.getAccessible().getAttribute(MIN_VALUE);
+            Double max = (Double)hsb.getAccessible().getAttribute(MAX_VALUE);
+            if (min != null && max != null) {
+                hsb.getAccessible().executeAction(Action.SET_VALUE, (max-min)*(horizontalPercent/100)+min);
+            }
         }
     }
 
@@ -1641,7 +1640,7 @@
         Node hsb = (Node)getAttribute(HORIZONTAL_SCROLLBAR);
         if (hsb == null) return false;
 
-        Boolean visible = null;//(Boolean)hsb.getAccessible().getAttribute(VISIBLE);
+        Boolean visible = (Boolean)hsb.getAccessible().getAttribute(VISIBLE);
         return Boolean.TRUE.equals(visible);
     }
 
@@ -1655,14 +1654,14 @@
         Node hsb = (Node) getAttribute(HORIZONTAL_SCROLLBAR);
         if (hsb != null) {
             /* Windows expects a percentage between 0 and 100 */
-//            Accessible hsba = hsb.getAccessible();
-//            Double value = (Double)hsba.getAttribute(VALUE);
-//            if (value == null) return 0;
-//            Double max = (Double)hsba.getAttribute(MAX_VALUE);
-//            if (max == null) return 0;
-//            Double min = (Double)hsba.getAttribute(MIN_VALUE);
-//            if (min == null) return 0;
-//            return (100 * (value - min)) / (max - min);
+            Accessible hsba = hsb.getAccessible();
+            Double value = (Double)hsba.getAttribute(VALUE);
+            if (value == null) return 0;
+            Double max = (Double)hsba.getAttribute(MAX_VALUE);
+            if (max == null) return 0;
+            Double min = (Double)hsba.getAttribute(MIN_VALUE);
+            if (min == null) return 0;
+            return (100 * (value - min)) / (max - min);
         }
 
         return 0;
@@ -1673,7 +1672,7 @@
         if (!get_HorizontallyScrollable()) return 100; /* MSDN spec */
         Node content = (Node) getAttribute(CONTENTS);
         if (content == null) return 100;
-        Bounds contentBounds = null;//(Bounds) content.getAccessible().getAttribute(BOUNDS);
+        Bounds contentBounds = (Bounds) content.getAccessible().getAttribute(BOUNDS);
         if (contentBounds == null) return 0;
         Bounds scrollPaneBounds = (Bounds)getAttribute(BOUNDS);
         if (scrollPaneBounds == null) return 0;
@@ -1686,7 +1685,7 @@
         Node vsb = (Node) getAttribute(VERTICAL_SCROLLBAR);
         if (vsb == null) return false;
 
-        Boolean visible = null;//(Boolean)vsb.getAccessible().getAttribute(VISIBLE);
+        Boolean visible = (Boolean)vsb.getAccessible().getAttribute(VISIBLE);
         return Boolean.TRUE.equals(visible);
     }
 
@@ -1700,14 +1699,14 @@
         Node vsb = (Node) getAttribute(Attribute.VERTICAL_SCROLLBAR);
         if (vsb != null) {
             /* Windows expects a percentage between 0 and 100 */
-//            Accessible vsba = vsb.getAccessible();
-//            Double value = (Double)vsba.getAttribute(VALUE);
-//            if (value == null) return 0;
-//            Double max = (Double)vsba.getAttribute(MAX_VALUE);
-//            if (max == null) return 0;
-//            Double min = (Double)vsba.getAttribute(MIN_VALUE);
-//            if (min == null) return 0;
-//            return (100 * (value - min)) / (max - min);
+            Accessible vsba = vsb.getAccessible();
+            Double value = (Double)vsba.getAttribute(VALUE);
+            if (value == null) return 0;
+            Double max = (Double)vsba.getAttribute(MAX_VALUE);
+            if (max == null) return 0;
+            Double min = (Double)vsba.getAttribute(MIN_VALUE);
+            if (min == null) return 0;
+            return (100 * (value - min)) / (max - min);
         }
 
         return 0;
@@ -1727,8 +1726,8 @@
         if (role == Role.SCROLL_PANE) {
             Node content = (Node) getAttribute(CONTENTS);
             if (content != null) {
-//                Bounds contentBounds = (Bounds) content.getAccessible().getAttribute(BOUNDS);
-//                contentHeight = contentBounds == null ? 0 : contentBounds.getHeight();
+                Bounds contentBounds = (Bounds) content.getAccessible().getAttribute(BOUNDS);
+                contentHeight = contentBounds == null ? 0 : contentBounds.getHeight();
             }
         } else {
             Integer itemCount = 0;
@@ -1764,7 +1763,7 @@
         if (cellIndex == null) cellIndex = (Integer)getAttribute(ROW_INDEX);
         Node container = getContainerNode();
         if (cellIndex != null && container != null) {
-//            container.getAccessible().executeAction(Action.SCROLL_TO_INDEX, cellIndex);
+            container.getAccessible().executeAction(Action.SCROLL_TO_INDEX, cellIndex);
         }
     }
 }
--- a/modules/graphics/src/main/java/com/sun/glass/ui/win/WinApplication.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/win/WinApplication.java	Mon Jun 23 20:04:23 2014 -0700
@@ -36,7 +36,7 @@
 import java.security.PrivilegedAction;
 import java.util.List;
 
-import com.sun.javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 
 final class WinApplication extends Application implements InvokeLaterDispatcher.InvokeLaterSubmitter {
 
--- a/modules/graphics/src/main/java/com/sun/glass/ui/win/WinTextRangeProvider.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/glass/ui/win/WinTextRangeProvider.java	Mon Jun 23 20:04:23 2014 -0700
@@ -25,11 +25,11 @@
 
 package com.sun.glass.ui.win;
 
-import static com.sun.javafx.scene.accessibility.Attribute.*;
+import static javafx.scene.accessibility.Attribute.*;
 import java.text.BreakIterator;
 import javafx.geometry.Bounds;
-import com.sun.javafx.scene.accessibility.Action;
-import com.sun.javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
 import javafx.scene.text.Font;
 import javafx.scene.text.FontWeight;
 
--- a/modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Accessible.java	Mon Jun 23 17:19:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package com.sun.javafx.scene.accessibility;
-
-import com.sun.glass.ui.PlatformAccessible;
-import com.sun.glass.ui.Application;
-
-/**
- * Experimental API - Do not use (will be removed).
- *
- * @treatAsPrivate
- */
-public abstract class Accessible {
-
-    private PlatformAccessible delegate;
-
-    public Accessible() {
-        delegate = Application.GetApplication().createAccessible(this);
-    }
-
-    public final void dispose() {
-        if (delegate != null) {
-            delegate.dispose();
-            delegate = null;
-        }
-    }
-
-    /**
-     * @treatAsPrivate implementation detail
-     * @deprecated This is an internal API that is not intended
-     * for use and will be removed in the next version
-     */
-    public final PlatformAccessible impl_getDelegate() {
-        return delegate;
-    }
-
-    /**
-     * This method is called by the AT to request the value for the given attribute.
-     *
-     * @see Attribute
-     * @param attribute the requested attribute
-     * @param parameters optional list of parameters
-     * @return the value for the requested attribute
-     */
-    public Object getAttribute(Attribute attribute, Object... parameters) {
-        return null;
-    }
-
-    /**
-     * This method is called by the AT to indicate the accessible to execute
-     * the given action.
-     *
-     * @see Action
-     * @param action the action to execute
-     * @param parameters optional list of parameters
-     */
-    public void executeAction(Action action, Object... parameters) {
-    }
-
-    /**
-     * This method is called by Accessible to notify the AT that
-     * the value for the given attribute has changed.
-     *
-     * @see Attribute
-     * @param notification the attribute which value has changed
-     */
-    public void sendNotification(Attribute notification) {
-        if (delegate != null) {
-            delegate.sendNotification(notification);
-        }
-    }
-}
--- a/modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Action.java	Mon Jun 23 17:19:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package com.sun.javafx.scene.accessibility;
-
-/**
- * Experimental API - Do not use (will be removed).
- *
- * @treatAsPrivate
- */
-public enum Action {
-
-    /**
-     * Selects the node whilst retaining all other selection in the container
-     * (assuming that the container supports multiple selection).
-     */
-    ADD_TO_SELECTION,
-
-    /**
-     * Decrements the node (if it support BLOCK_DECREMENT) by its larger block decrement
-     * value. A smaller decrement can be performed by using {@link #DECREMENT}.
-     */
-    BLOCK_DECREMENT,
-
-    /**
-     * Increments the node (if it support BLOCK_INCREMENT) by its larger block increment
-     * value. A smaller increment can be performed by using {@link #INCREMENT}.
-     */
-    BLOCK_INCREMENT,
-
-    COLLAPSE,
-
-    /**
-     * Decrements the node (if it support DECREMENT) by its smaller unit decrement
-     * value. A larger decrement can be performed by using {@link #BLOCK_DECREMENT}.
-     */
-    DECREMENT,
-
-    EXPAND,
-
-    FIRE,
-
-    /**
-     * Increments the node (if it support INCREMENT) by its smaller unit increment
-     * value. A larger increment can be performed by using {@link #BLOCK_INCREMENT}.
-     */
-    INCREMENT,
-
-    /**
-     * Moves the node (if it supports MOVE) by the provided x and y coordinates.
-     * Parameter: Double, Double
-     */
-    MOVE,
-
-    /**
-     * Deselects the node whilst retaining all other selection in the container.
-     */
-    REMOVE_FROM_SELECTION,
-
-    /**
-     * Requests that the given integer index is shown, if possible, by the
-     * container (e.g. ListView).
-     * Parameter: Integer
-     */
-    SCROLL_TO_INDEX,
-
-    /**
-     * Selects the node, clearing out all other selection in the container.
-     */
-    SELECT,
-
-    /**
-     * Sets the tile for a node.
-     * Parameter: String
-     */
-    SET_TITLE,
-
-    /**
-     * Sets the value for a node.
-     * Parameter: Double
-     */
-    SET_VALUE,
-
-    /**
-     * Request the receiver to show its menu.
-     */
-    SHOW_MENU,
-}
--- a/modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Attribute.java	Mon Jun 23 17:19:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,477 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package com.sun.javafx.scene.accessibility;
-
-import java.time.LocalDate;
-import javafx.collections.ObservableList;
-import javafx.geometry.Bounds;
-import javafx.geometry.Orientation;
-import javafx.scene.Node;
-import javafx.scene.Parent;
-import javafx.scene.Scene;
-import javafx.scene.input.KeyCombination;
-import javafx.scene.text.Font;
-
-/**
- * Experimental API - Do not use (will be removed).
- *
- * @treatAsPrivate
- */
-public enum Attribute {
-
-    /**
-     * Returns the accelerator for the Node.
-     * Type: KeyCombination
-     */
-    ACCELERATOR("Accelerator", KeyCombination.class),
-
-    /**
-     * Returns the bounds for the Node.
-     * Type: Bounds
-     */
-    BOUNDS("Bounds", Bounds.class),
-
-    /**
-     * Returns the array of bounding rectangles for the given char range.
-     * Parameter: Integer range start
-     * Parameter: Integer range length
-     * Type: Bounds[]
-     */
-    BOUNDS_FOR_RANGE("BoundsForRange", Bounds[].class),
-
-    /**
-     * Returns the caret offset for the node.
-     * Type: Integer
-     */
-    CARET_OFFSET("CaretOffset", Integer.class),
-
-    /**
-     * Returns the children for the Node.
-     * Type: ObservableList&lt;Node&gt;
-     */
-    CHILDREN("Children", ObservableList.class),
-
-    /**
-     * Returns the column at the given index
-     * Parameter: Integer
-     * Type: Node
-     */
-    COLUMN_AT_INDEX("ColumnAtIndex", Node.class),
-
-    /**
-     * Returns the cell at the given row and column indices
-     * Parameter: Integer, Integer
-     * Type: Node
-     */
-    CELL_AT_ROW_COLUMN("CellAtRowColumn", Node.class),
-
-    /**
-     * Returns the column count
-     * Type: Integer
-     */
-    COLUMN_COUNT("ColumnCount", Integer.class),
-
-    /**
-     * Returns the column index of a cell
-     * Type: Integer
-     */
-    COLUMN_INDEX("ColumnIndex", Integer.class),
-
-    /**
-     * Returns the contents of a scroll pane
-     * Type: Node
-     */
-    CONTENTS("Contents", Node.class),
-
-    /**
-     * Returns the description for the Node.
-     * Type: String
-     */
-    DESCRIPTION("Description", String.class),
-
-    /**
-     * Depth of a row in a disclosure hierarchy.
-     * Type: Integer
-     */
-    DISCLOSURE_LEVEL("DisclosureLevel", Integer.class),
-
-    /**
-     * Returns the local date for the node.
-     * Type: LocalDate
-     */
-    DATE("Date", LocalDate.class),
-
-    /**
-     * Returns true if the node is editable.
-     * Type: Boolean
-     */
-    EDITABLE("Editable", Boolean.class),
-
-    /**
-     * Returns true if the Node is enabled.
-     * Type: Boolean
-     */
-    ENABLED("Enabled", Boolean.class),
-
-    /**
-     * Indicates if a popup is expanded.
-     * Type: Boolean
-     */
-    EXPANDED("Expanded", Boolean.class),
-
-    /**
-     * Returns the focus item.
-     * Type: Node
-     *
-     * Used for controls with items such TabPaneView, TableView, ListView, etc.
-     * It returns the exact Node within the control that has the focus.
-     */
-    FOCUS_ITEM("FocusItem", Node.class),
-
-    /**
-     * Returns the focus Node.
-     * Type: Node
-     *
-     * This attribute is requested to the Scene, where it maps to {@link Scene#focusOwnerProperty()}
-     * The Scene can delegate the request to its current transient focus container.
-     */
-    FOCUS_NODE("FocusNode", Node.class),
-
-    /**
-     * Returns true if the Node is focused.
-     * Type: Boolean
-     */
-    FOCUSED("Focused", Boolean.class),
-
-    /**
-     * Returns the font for the node
-     * Type: Font
-     */
-    FONT("Font", Font.class),
-
-    /**
-     * Returns the header for the node
-     * Type: Node
-     */
-    HEADER("Header", Node.class),
-
-    /**
-     * Returns the horizontal scroll bar of a scroll pane
-     * Type: Node
-     */
-    HORIZONTAL_SCROLLBAR("HorizontalScrollBar", Node.class),
-
-    /**
-     * Returns the indeterminate state for the node.
-     * Type: Boolean
-     */
-    INDETERMINATE("Indeterminate", Boolean.class),
-
-    /**
-     * Returns the index of a row or column
-     * Type: Integer
-     */
-    INDEX("Index", Integer.class),
-
-    /**
-     * Returns a Node that is a label for this control, or null.
-     * Type: Node
-     */
-    LABELED_BY("LabeledBy", Node.class),
-
-    /**
-     * Indicates whether a TreeItem is a leaf element or not.
-     * Type: Boolean
-     */
-    LEAF("Leaf", Boolean.class),
-
-    /**
-     * Returns the line start of the given line index.
-     * Parameter: Integer - line index
-     * Type: Integer
-     */
-    LINE_END("LineEnd", Integer.class),
-
-    /**
-     * Returns the line index of the given character offset.
-     * Parameter: Integer - character offset.
-     * Type: Integer
-     */
-    LINE_FOR_OFFSET("LineOffset", Integer.class),
-
-    /**
-     * Returns the line end of the given line index.
-     * Parameter: Integer - line index
-     * Type: Integer
-     */
-    LINE_START("LineStart", Integer.class),
-
-    /**
-     * Returns the min value for the node.
-     * Type: Double
-     */
-    MIN_VALUE("MinValue", Double.class),
-
-    /**
-     * Returns the max value for the node.
-     * Type: Double
-     */
-    MAX_VALUE("MaxValue", Double.class),
-
-    /**
-     * Returns the Menu.
-     * Type: Node
-     */
-    MENU("Menu", Node.class),
-
-    /**
-     * Returns the owner Menu.
-     * Type: Node
-     */
-    MENU_FOR("MenuFor", Node.class),
-
-    /**
-     * Returns the Menu Item Type.
-     * Type: Role
-     */
-    MENU_ITEM_TYPE("MenuItemType", Role.class),
-
-    /**
-     * Returns the mnemonic for the node.
-     * Type: String
-     */
-    MNEMONIC("Mnemonic", String.class),
-
-    /**
-     * Returns whether the control allows for multiple selection.
-     * Type: Boolean
-     */
-    MULTIPLE_SELECTION("MultipleSelection", Boolean.class),
-
-    /**
-     * Returns the Node at the given point location.
-     * Type: Node
-     * Parameters: Point2D
-     */
-    NODE_AT_POINT("NodeAtPoint", Node.class),
-
-    /**
-     * Returns the char offset at the given point location.
-     * Type: Integer
-     * Parameters: Point2D
-     */
-    OFFSET_AT_POINT("OffsetAtPoint", Integer.class),
-
-    /**
-     * Returns the orientation of a node
-     * Type: Orientation
-     */
-    ORIENTATION("Orientation", Orientation.class),
-
-    /**
-     * Return the overflow button for the Node.
-     * Type: Node
-     */
-    OVERFLOW_BUTTON("Overflow Button", Node.class),
-
-    /**
-     * Returns the pages for the Node.
-     * Type: ObservableList&lt;Node&gt;
-     */
-    PAGES("Pages", ObservableList.class),
-
-    /**
-     * Returns the parent for the Node.
-     * Type: Parent
-     */
-    PARENT("Parent", Parent.class),
-
-    /**
-     * Returns the role for the Node.
-     * Type: Role
-     */
-    ROLE("Role", Role.class),
-
-    /**
-     * Returns the row at the given index
-     * Parameter: Integer
-     * Type: Node
-     */
-    ROW_AT_INDEX("RowAtIndex", Node.class),
-
-    /**
-     * Returns the row count
-     * Type: Integer
-     */
-    ROW_COUNT("RowCount", Integer.class),
-
-    /**
-     * Returns the row index of a cell
-     * Type: Integer
-     */
-    ROW_INDEX("RowIndex", Integer.class),
-
-    /**
-     * Returns the scene for the Node.
-     * Type: Scene
-     */
-    SCENE("Scene", Scene.class),
-
-    /**
-     * Returns if the item is selected (in a radio group for example)
-     * Type: Boolean
-     */
-    SELECTED("Selected", Boolean.class),
-
-    /**
-     * Returns the list of selected cells
-     * Type: ObservableList&lt;Node&gt;
-     */
-    SELECTED_CELLS("SelectedCells", ObservableList.class),
-
-    /**
-     * Returns the selected pagination page item.
-     * Type: Node
-     */
-    SELECTED_PAGE("SelectedPage", Node.class),
-
-    /**
-     * Returns the list of selected rows
-     * Type: ObservableList&lt;Node&gt;
-     */
-    SELECTED_ROWS("SelectedRows", ObservableList.class),
-
-    /**
-     * Returns the selected tab item.
-     * Type: Node
-     */
-    SELECTED_TAB("SelectedTab", Node.class),
-
-    /**
-     * Returns the selection end for the node.
-     * Type: Integer
-     */
-    SELECTION_END("SelectionEnd", Integer.class),
-
-    /**
-     * Returns the selection start for the node.
-     * Type: Integer
-     */
-    SELECTION_START("SelectionStart", Integer.class),
-
-    /**
-     * Returns the tabs for the Node.
-     * Type: ObservableList&lt;Node&gt;
-     */
-    TABS("Tabs", ObservableList.class),
-
-    /**
-     * Returns the title for the Node.
-     * E.g.
-     * <ul>
-     * <li>ComboBox returns a string representation of its
-     * currently selected item.
-     * <li>TextField returns the text currently entered into it.
-     * </ul>
-     * Type: String
-     */
-    TITLE("Title", String.class),
-
-    /**
-     * The text of the Tooltip associated with a given node, although for now this
-     * is only supported on Control subclasses.
-     * Type: String
-     */
-    TOOLTIP("Tooltip", String.class),
-
-    /**
-     * Returns a tree item (Role.TREE_ITEM or Role.TREE_TABLE_ITEM) at the given
-     * index, relative to the tree item that this is called on. If this is called
-     * on a container (e.g. TreeView or TreeTableView), it will be called on the
-     * root tree item.
-     * Parameter: Integer
-     * Type: Node
-     */
-    TREE_ITEM_AT_INDEX("TreeItemAtIndex", Node.class),
-
-    /**
-     * Returns the number of tree items that are expanded descendants of the current
-     * tree item. If requested on a container (e.g. TreeView or TreeTableView),
-     * this will return the count from the root tree item.
-     * Type: Node
-     */
-    TREE_ITEM_COUNT("TreeItemCount", Integer.class),
-
-    /**
-     * Returns the parent of a Role.TREE_ITEM (as another Role.TREE_ITEM, or if
-     * there is no parent (e.g. it is the root node)), then return the parent
-     * node whatever it is (most probably Role.TREE_VIEW or Role.TREE_TABLE_VIEW)
-     * Type: Node
-     */
-    TREE_ITEM_PARENT("TreeItemParent", Node.class),
-
-    /**
-     * Returns the value for the node.
-     * Type: Double
-     */
-    VALUE("Value", Double.class),
-
-    /**
-     * Returns the vertical scroll bar of a scroll pane
-     * Type: Node
-     */
-    VERTICAL_SCROLLBAR("VerticalScrollBar", Node.class),
-
-    /**
-     * Returns if the visibility for the node.
-     * Type: Boolean
-     */
-    VISIBLE("VISIBLE", Boolean.class),
-
-    /**
-     * Indicates whether a Hyperlink has been visited or not.
-     * This is an undocumented Mac-only attribute.
-     * Type: Boolean
-     */
-    VISITED("Visited", Boolean.class),
-    ;
-
-    private String name;
-    private Class<?> returnClass;
-
-    Attribute(String name, Class<?> returnClass) {
-        this.name = name;
-        this.returnClass = returnClass;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public Class<?> getReturnType() {
-        return returnClass;
-    }
-}
--- a/modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/Role.java	Mon Jun 23 17:19:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package com.sun.javafx.scene.accessibility;
-
-/**
- * Experimental API - Do not use (will be removed).
- *
- * @treatAsPrivate
- */
-public enum Role {
-
-    /**
-     * Button
-     * Attributes: TITLE
-     * Actions: FIRE
-     */
-    BUTTON,
-
-    /**
-     * CheckBox.
-     * Attributes: TITLE, SELECTED, INDETERMINATE
-     * Actions: FIRE
-     */
-    CHECKBOX,
-
-    /**
-     * ComboBox.
-     * Attributed:
-     * Actions:
-     */
-    COMBOBOX,
-
-    /**
-     * ContextMenu.
-     * Attributed:
-     * Actions:
-     */
-    CONTEXT_MENU,
-
-    /**
-     * DatePicker.
-     * Attributed: DATE, TITLE
-     * Actions:
-     */
-    DATE_PICKER,
-
-    /**
-     * Decrement button
-     *
-     */
-    DECREMENT_BUTTON,
-
-    /**
-     * Used by TreeView / TreeTableView to represent the arrow to the side of branches
-     * Attributes: (none)
-     * Actions: Fire
-     */
-    DISCLOSURE_NODE,
-
-    /**
-     * Header.
-     * Attributes: TITLE
-     * Actions: (none)
-     */
-    HEADER,
-
-    /**
-     * Hyperlink
-     * Attributes: TITLE
-     * Actions: FIRE
-     */
-    HYPERLINK,
-
-    /**
-     * Increment button
-     *
-     */
-    INCREMENT_BUTTON,
-
-    /**
-     * Image
-     * Attributes: TITLE
-     * Actions: (none)
-     */
-    IMAGE,
-
-    /**
-     * ListView
-     * Attributes: ROW_AT_INDEX, ROW_COUNT, SELECTED_ROWS, MULTIPLE_SELECTION,
-     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
-     * Actions: SCROLL_TO_INDEX
-     */
-    LIST_VIEW,
-
-    /**
-     * List Item
-     * Attributes: TITLE, INDEX, SELECTED
-     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
-     */
-    LIST_ITEM,
-
-    /**
-     * Menu Bar.
-     * Attributed:
-     * Actions:
-     */
-    MENU_BAR,
-
-    /**
-     * Menu Button.
-     * Attributed: TITLE.
-     * Actions: FIRE.
-     */
-    MENU_BUTTON,
-
-    /**
-     * Menu Item.
-     * Attributed: MENU_ITEM_TYPE, SELECTED, ACCELERATOR, TITLE
-     * Actions: FIRE
-     */
-    MENU_ITEM,
-
-    /**
-     * Node
-     * Attributes: PARENT, ROLE, SCENE, BOUNDS, ENABLED, FOCUS, VISIBLE, LABELED_BY
-     * Actions: (none)
-     */
-    NODE,
-
-    /**
-     * Page in a Pagination control
-     * Attributes: TITLE, Selected
-     * Actions: SELECT
-     */
-    PAGE,
-
-    /**
-     * Pagination
-     * Attributes: PAGES, SELECTED_PAGE
-     * Actions: (none)
-     */
-    PAGINATION,
-
-    /**
-     * Parent
-     * Attributes: CHILDREN
-     * Actions: (none)
-     */
-    PARENT,
-
-    /**
-     * Password Field
-     * Attributes: (none)
-     * Actions: (none)
-     */
-    PASSWORD_FIELD,
-
-    /**
-     * ProgressIndicator
-     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, INDETERMINATE
-     * Actions: (none)
-     */
-    PROGRESS_INDICATOR,
-
-    /**
-     * RadioButton
-     * Attributes: TITLE, SELECTED
-     * Actions: FIRE
-     */
-    RADIO_BUTTON,
-
-    /**
-     * Slider
-     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, ORIENTATION
-     * Actions: INCREMENT, DECREMENT, SET_VALUE
-     */
-    SLIDER,
-
-    /**
-     * Text
-     * Attributes: TITLE, SELECTION_START, SELECTION_SET
-     * Actions: SET_TITLE
-     */
-    TEXT,
-
-    /**
-     * Text Area
-     * Attributes: TITLE, SELECTION_START, SELECTION_SET
-     * Actions: SET_TITLE
-     */
-    TEXT_AREA,
-
-    /**
-     * Text Field
-     * Attributes: TITLE, SELECTION_START, SELECTION_SET
-     * Actions: SET_TITLE
-     */
-    TEXT_FIELD,
-
-    /**
-     * ToggleButton
-     * Attributes: TITLE, SELECTED
-     * Action: FIRE
-     */
-    TOGGLE_BUTTON,
-    
-    /**
-     * Tooltip
-     * Attributes: (none)
-     * Action: (none)
-     */
-    TOOLTIP,
-
-    /**
-     * ScrollBar
-     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, ORIENTATION
-     * Actions: BLOCK_INCREMENT, INCREMENT, DECREMENT, BLOCK_DECREMENT, SET_VALUE
-     */
-    SCROLL_BAR,
-
-    /**
-     * ScrollPane
-     * Attributes: CONTENTS, HORIZONTAL_SCROLLBAR, VERTICAL_SCROLLBAR
-     * Actions: (none)
-     */
-    SCROLL_PANE,
-
-    /**
-     * SplitMenuButton
-     * Attributes: TITLE, EXPANDED.
-     * Actions: FIRE, EXPAND, COLLAPSE.
-     */
-    SPLIT_MENU_BUTTON,
-
-    /**
-     * Tab
-     * Attributes: TITLE, SELECTED
-     * Actions: SELECT
-     */
-    TAB_ITEM,
-
-    /**
-     * TabPane
-     * Attributes: TABS, SELECTED_TAB
-     * Actions: (none)
-     */
-    TAB_PANE,
-
-    /**
-     * Table Cell
-     * Attributes: TITLE, ROW_INDEX, COLUMN_INDEX, SELECTED
-     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
-     */
-    TABLE_CELL,
-
-    /**
-     * Table Column
-     * Attributes: TITLE, INDEX
-     * Actions: (none)
-     */
-    TABLE_COLUMN,
-
-    /**
-     * Table Row
-     * Attributes: TITLE, INDEX
-     * Actions: (none)
-     */
-    TABLE_ROW,
-
-    /**
-     * Table View
-     * Attributes: ROW_COUNT, COLUMN_COUNT, SELECTED_CELLS, CELL_AT_ROWCOLUMN, MULTIPLE_SELECTION,
-     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
-     * Attributes for header support: COLUMN_AT_INDEX, HEADER
-     * Actions: SCROLL_TO_INDEX
-     */
-    TABLE_VIEW,
-
-    /**
-     *
-     * Actions: MOVE
-     */
-    THUMB,
-
-    /**
-     * TitledPane
-     * Attributes: TITLE, EXPANDED
-     * Actions: EXPAND, COLLAPSE
-     */
-    TITLED_PANE,
-
-    /**
-     * Toolbar
-     * Attributes: OVERFLOW_BUTTON
-     * Actions: (none)
-     */
-    TOOLBAR,
-
-    /**
-     * Used by TreeView
-     * Attributes: TITLE, INDEX, SELECTED, EXPANDED, LEAF,
-     *             TREE_ITEM_COUNT, TREE_ITEM_AT_INDEX, TREE_ITEM_PARENT,
-     *             DISCLOSURE_LEVEL
-     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, EXPAND, COLLAPSE
-     */
-    TREE_ITEM,
-
-    /**
-     * TreeTable Cell
-     * Attributes: TITLE, ROW_INDEX, COLUMN_INDEX, SELECTED
-     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
-     */
-    TREE_TABLE_CELL,
-
-    /**
-     * Used by TreeTableView
-     * Attributes: TITLE, INDEX, SELECTED, EXPANDED, LEAF,
-     *             TREE_ITEM_COUNT, TREE_ITEM_AT_INDEX,TREE_ITEM_PARENT,
-     *             DISCLOSURE_LEVEL
-     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, EXPAND, COLLAPSE
-     */
-    TREE_TABLE_ITEM,
-
-    /**
-     * Table View
-     * Attributes: ROW_COUNT, TREE_ITEM_AT_INDEX, COLUMN_COUNT,
-     *             SELECTED_CELLS, CELL_AT_ROWCOLUMN, MULTIPLE_SELECTION,
-     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
-     * Attributes for header support: COLUMN_AT_INDEX, HEADER
-     * Actions: SCROLL_TO_INDEX
-     */
-    TREE_TABLE_VIEW,
-
-    /**
-     * TreeView
-     * Attributes: ROW_COUNT, TREE_ITEM_AT_INDEX, SELECTED_ROWS, MULTIPLE_SELECTION,
-     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
-     * Actions: SCROLL_TO_INDEX
-     */
-    TREE_VIEW,
-}
--- a/modules/graphics/src/main/java/com/sun/javafx/scene/accessibility/package.html	Mon Jun 23 17:19:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
-  <title>javafx.scene.accessibility</title>
-</head>
-<body>
-<p>Provides the set of classes for accessibility support.</p>
-</body>
-</html>
--- a/modules/graphics/src/main/java/com/sun/javafx/tk/TKSceneListener.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/javafx/tk/TKSceneListener.java	Mon Jun 23 20:04:23 2014 -0700
@@ -27,7 +27,7 @@
 
 import javafx.collections.ObservableList;
 import javafx.event.EventType;
-//import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 import javafx.scene.input.*;
 
 /**
@@ -118,5 +118,5 @@
 
     public void touchEventEnd();
 
-//    public Accessible getSceneAccessible();
+    public Accessible getSceneAccessible();
 }
--- a/modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassViewEventHandler.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassViewEventHandler.java	Mon Jun 23 20:04:23 2014 -0700
@@ -46,7 +46,7 @@
 
 import javafx.event.EventType;
 import javafx.geometry.Point2D;
-//import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Accessible;
 import javafx.scene.input.InputMethodEvent;
 import javafx.scene.input.InputMethodHighlight;
 import javafx.scene.input.InputMethodTextRun;
@@ -1130,11 +1130,11 @@
         gestures.notifyEndTouchEvent(time);
     }
 
-//    @Override
-//    public Accessible getSceneAccessible() {
-//        if (scene != null && scene.sceneListener != null) {
-//            return scene.sceneListener.getSceneAccessible();
-//        }
-//        return null;
-//    }
+    @Override
+    public Accessible getSceneAccessible() {
+        if (scene != null && scene.sceneListener != null) {
+            return scene.sceneListener.getSceneAccessible();
+        }
+        return null;
+    }
 }
--- a/modules/graphics/src/main/java/javafx/scene/Node.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/Node.java	Mon Jun 23 20:04:23 2014 -0700
@@ -75,10 +75,10 @@
 import javafx.geometry.Point2D;
 import javafx.geometry.Point3D;
 import javafx.geometry.Rectangle2D;
-//import javafx.scene.accessibility.Accessible;
-//import javafx.scene.accessibility.Action;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Action;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.effect.Blend;
 import javafx.scene.effect.BlendMode;
 import javafx.scene.effect.Effect;
@@ -745,7 +745,7 @@
                     oldParent = newParent;
                     invalidateLocalToSceneTransform();
                     parentResolvedOrientationInvalidated();
-//                    accSendNotification(Attribute.PARENT);
+                    accSendNotification(Attribute.PARENT);
                 }
 
                 @Override
@@ -857,32 +857,32 @@
 
         /* Dispose the accessible peer, if any. If AT ever needs this node again
          * a new accessible peer is created. */
-//        if (accessible != null) {
-//            /* Generally accessibility does not retain any state, therefore deleting objects
-//             * generally does not cause problems (AT just asks everything back).
-//             * The exception to this rule is when the object sends a notifications to the AT, 
-//             * in which case it is expected to be around to answer request for the new values. 
-//             * It is possible that a object is reparented (within the scene) in the middle of
-//             * this process. For example, when a tree item is expanded, the notification is 
-//             * sent to the AT by the cell. But when the TreeView relayouts the cell can be 
-//             * reparented before AT can query the relevant information about the expand event.
-//             * If the accessible was disposed, AT can't properly report the event.
-//             * 
-//             * The fix is to defer the disposal of the accessible to the next pulse.
-//             * If at that time the node is placed back to the scene, then the accessible is hooked
-//             * to Node and AT requests are processed. Otherwise the accessible is disposed.
-//             */
-//            if (oldScene != null && oldScene != newScene && newScene == null) {
-//                // Strictly speaking we need some type of accessible.thaw() at this point.
-//                oldScene.addAccessible(Node.this, accessible);
-//            } else {
-//                accessible.dispose();
-//            }
-//            /* Always set to null to ensure this accessible is never on more than one 
-//             * Scene#accMap at the same time (At lest not with the same accessible). 
-//             */
-//            accessible = null;
-//        }
+        if (accessible != null) {
+            /* Generally accessibility does not retain any state, therefore deleting objects
+             * generally does not cause problems (AT just asks everything back).
+             * The exception to this rule is when the object sends a notifications to the AT, 
+             * in which case it is expected to be around to answer request for the new values. 
+             * It is possible that a object is reparented (within the scene) in the middle of
+             * this process. For example, when a tree item is expanded, the notification is 
+             * sent to the AT by the cell. But when the TreeView relayouts the cell can be 
+             * reparented before AT can query the relevant information about the expand event.
+             * If the accessible was disposed, AT can't properly report the event.
+             * 
+             * The fix is to defer the disposal of the accessible to the next pulse.
+             * If at that time the node is placed back to the scene, then the accessible is hooked
+             * to Node and AT requests are processed. Otherwise the accessible is disposed.
+             */
+            if (oldScene != null && oldScene != newScene && newScene == null) {
+                // Strictly speaking we need some type of accessible.thaw() at this point.
+                oldScene.addAccessible(Node.this, accessible);
+            } else {
+                accessible.dispose();
+            }
+            /* Always set to null to ensure this accessible is never on more than one 
+             * Scene#accMap at the same time (At lest not with the same accessible). 
+             */
+            accessible = null;
+        }
     }
 
     final void setScenes(Scene newScene, SubScene newSubScene) {
@@ -7540,7 +7540,7 @@
 
                 needsChangeEvent = true;
 
-//                accSendNotification(Attribute.FOCUSED);
+                accSendNotification(Attribute.FOCUSED);
             }
         }
 
@@ -9162,96 +9162,96 @@
         });
     }
 
-//    /**
-//     * Experimental API - Do not use (will be removed).
-//     *
-//     * @treatAsPrivate
-//     */
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.NODE;
-//            case PARENT: return getParent();
-//            case SCENE: return getScene();
-//            case BOUNDS: return localToScreen(getBoundsInLocal());
-//            case ENABLED: return !isDisabled();
-//            case FOCUSED: return isFocused();
-//            case VISIBLE: return isVisible();
-//            case LABELED_BY: return labeledBy;
-//            default: return null;
-//        }
-//    }
-//
-//    /**
-//     * Experimental API - Do not use (will be removed).
-//     *
-//     * @treatAsPrivate
-//     */
-//    public void accExecuteAction(Action action, Object... parameters) {
-//    }
-//
-//    /**
-//     * Experimental API - Do not use (will be removed).
-//     *
-//     * @treatAsPrivate
-//     */
-//    public final void accSendNotification(Attribute attributes) {
-//        if (accessible == null) {
-//            Scene scene = getScene();
-//            if (scene != null) {
-//                accessible = scene.removeAccessible(this);
-//            }
-//        }
-//        if (accessible != null) {
-//            accessible.sendNotification(attributes);
-//        }
-//    }
-//
-//    Accessible accessible;
-//
-//    /**
-//     * Experimental API - Do not use (will be removed).
-//     *
-//     * @treatAsPrivate
-//     */
-//    public final Accessible getAccessible() {
-//        if (accessible == null) {
-//            Scene scene = getScene();
-//            /* It is possible the node was reparented and getAccessible() 
-//             * is called before the pulse. Try to recycle the accessible
-//             * before creating a new one.
-//             * Note: this code relies that an accessible can never be on
-//             * more than one Scene#accMap. Thus, the only way
-//             * scene#removeAccessible() returns non-null is if the node
-//             * old scene and new scene are the same object.
-//             */
-//            if (scene != null) {
-//                accessible = scene.removeAccessible(this);
-//            }
-//        }
-//        if (accessible == null) {
-//            accessible = new Accessible() {
-//                @Override public Object getAttribute(Attribute attribute, Object... parameters) {
-//                    return accGetAttribute(attribute, parameters);
-//                }
-//                @Override public void executeAction(Action action, Object... parameters) {
-//                    accExecuteAction(action, parameters);
-//                }
-//                @Override public String toString() {
-//                    String klassName = Node.this.getClass().getName();
-//                    return klassName.substring(klassName.lastIndexOf('.')+1);
-//                }
-//            };
-//        }
-//        return accessible;
-//    }
-//
-//    void releaseAccessible() {
-//        Accessible acc = this.accessible;
-//        if (acc != null) {
-//            accessible = null;
-//            acc.dispose();
-//        }
-//    }
+    /**
+     * Experimental API - Do not use (will be removed).
+     *
+     * @treatAsPrivate
+     */
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.NODE;
+            case PARENT: return getParent();
+            case SCENE: return getScene();
+            case BOUNDS: return localToScreen(getBoundsInLocal());
+            case ENABLED: return !isDisabled();
+            case FOCUSED: return isFocused();
+            case VISIBLE: return isVisible();
+            case LABELED_BY: return labeledBy;
+            default: return null;
+        }
+    }
+
+    /**
+     * Experimental API - Do not use (will be removed).
+     *
+     * @treatAsPrivate
+     */
+    public void accExecuteAction(Action action, Object... parameters) {
+    }
+
+    /**
+     * Experimental API - Do not use (will be removed).
+     *
+     * @treatAsPrivate
+     */
+    public final void accSendNotification(Attribute attributes) {
+        if (accessible == null) {
+            Scene scene = getScene();
+            if (scene != null) {
+                accessible = scene.removeAccessible(this);
+            }
+        }
+        if (accessible != null) {
+            accessible.sendNotification(attributes);
+        }
+    }
+
+    Accessible accessible;
+
+    /**
+     * Experimental API - Do not use (will be removed).
+     *
+     * @treatAsPrivate
+     */
+    public final Accessible getAccessible() {
+        if (accessible == null) {
+            Scene scene = getScene();
+            /* It is possible the node was reparented and getAccessible() 
+             * is called before the pulse. Try to recycle the accessible
+             * before creating a new one.
+             * Note: this code relies that an accessible can never be on
+             * more than one Scene#accMap. Thus, the only way
+             * scene#removeAccessible() returns non-null is if the node
+             * old scene and new scene are the same object.
+             */
+            if (scene != null) {
+                accessible = scene.removeAccessible(this);
+            }
+        }
+        if (accessible == null) {
+            accessible = new Accessible() {
+                @Override public Object getAttribute(Attribute attribute, Object... parameters) {
+                    return accGetAttribute(attribute, parameters);
+                }
+                @Override public void executeAction(Action action, Object... parameters) {
+                    accExecuteAction(action, parameters);
+                }
+                @Override public String toString() {
+                    String klassName = Node.this.getClass().getName();
+                    return klassName.substring(klassName.lastIndexOf('.')+1);
+                }
+            };
+        }
+        return accessible;
+    }
+
+    void releaseAccessible() {
+        Accessible acc = this.accessible;
+        if (acc != null) {
+            accessible = null;
+            acc.dispose();
+        }
+    }
 
 }
 
--- a/modules/graphics/src/main/java/javafx/scene/Parent.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/Parent.java	Mon Jun 23 20:04:23 2014 -0700
@@ -35,8 +35,8 @@
 import javafx.collections.FXCollections;
 import javafx.collections.ListChangeListener.Change;
 import javafx.collections.ObservableList;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -1774,22 +1774,22 @@
         return alg.processContainerNode(this, ctx);
     }
 
-//    /** @treatAsPrivate */
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.PARENT;
-//            case CHILDREN: return getChildrenUnmodifiable();
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
-//
-//    void releaseAccessible() {
-//        for (int i=0, max=children.size(); i<max; i++) {
-//            final Node node = children.get(i);
-//            node.releaseAccessible();
-//        }
-//        super.releaseAccessible();
-//    }
+    /** @treatAsPrivate */
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.PARENT;
+            case CHILDREN: return getChildrenUnmodifiable();
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
+
+    void releaseAccessible() {
+        for (int i=0, max=children.size(); i<max; i++) {
+            final Node node = children.get(i);
+            node.releaseAccessible();
+        }
+        super.releaseAccessible();
+    }
 
 }
--- a/modules/graphics/src/main/java/javafx/scene/Scene.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/Scene.java	Mon Jun 23 20:04:23 2014 -0700
@@ -69,9 +69,9 @@
 import javafx.css.StyleableObjectProperty;
 import javafx.event.*;
 import javafx.geometry.*;
-//import javafx.scene.accessibility.Accessible;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Accessible;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.image.WritableImage;
 import javafx.scene.input.*;
 import javafx.scene.paint.Color;
@@ -720,13 +720,13 @@
 
         Toolkit tk = Toolkit.getToolkit();
         tk.removeSceneTkPulseListener(scenePulseListener);
-//        if (accessible != null) {
-//            disposeAccessibles();
-//            Node root = getRoot();
-//            if (root != null) root.releaseAccessible();
-//            accessible.dispose();
-//            accessible = null;
-//        }
+        if (accessible != null) {
+            disposeAccessibles();
+            Node root = getRoot();
+            if (root != null) root.releaseAccessible();
+            accessible.dispose();
+            accessible = null;
+        }
         impl_peer.dispose();
         impl_peer = null;
 
@@ -2056,9 +2056,9 @@
                             + " canceled by nested requestFocus");
                 }
             }
-//            if (accessible != null) {
-//                accessible.sendNotification(Attribute.FOCUS_NODE);
-//            }
+            if (accessible != null) {
+                accessible.sendNotification(Attribute.FOCUS_NODE);
+            }
         }
     };
 
@@ -2350,7 +2350,7 @@
 
             focusCleanup();
 
-//            disposeAccessibles();
+            disposeAccessibles();
 
             if (PULSE_LOGGING_ENABLED) {
                 PulseLogger.newPhase("CSS Pass");
@@ -2735,10 +2735,10 @@
             }
         }
 
-//        @Override
-//        public Accessible getSceneAccessible() {
-//            return getAccessible();
-//        }
+        @Override
+        public Accessible getSceneAccessible() {
+            return getAccessible();
+        }
     }
 
     private class ScenePeerPaintListener implements TKScenePaintListener {
@@ -3899,9 +3899,9 @@
                 getFocusOwner().setFocused(windowFocused);
             }
             if (windowFocused) {
-//                if (accessible != null) {
-//                    accessible.sendNotification(Attribute.FOCUS_NODE);
-//                }
+                if (accessible != null) {
+                    accessible.sendNotification(Attribute.FOCUS_NODE);
+                }
             }
         }
 
@@ -6166,110 +6166,110 @@
         }
     }
 
-//    private Map<Node, Accessible> accMap;
-//    Accessible removeAccessible(Node node) {
-//        if (accMap == null) return null;
-//        return accMap.remove(node);
-//    }
-//
-//    void addAccessible(Node node, Accessible acc) {
-//        if (accMap == null) {
-//            accMap = new HashMap<Node, Accessible>();
-//        }
-//        accMap.put(node, acc);
-//    }
-//
-//    private void disposeAccessibles() {
-//        if (accMap != null) {
-//            for (Map.Entry<Node, Accessible> entry : accMap.entrySet()) {
-//                Node node = entry.getKey();
-//                Accessible acc = entry.getValue();
-//                if (node.accessible != null) {
-//                    /* This node has already been initialized to another scene.
-//                     * Note an accessible can be returned to the node before the
-//                     * pulse if getAccessible() is called. In which case it must 
-//                     * already being removed from accMap.
-//                     */
-//                    if (node.accessible == acc) {
-//                        System.err.println("[A11y] 'node.accessible == acc' should never happen.");
-//                    }
-//                    if (node.getScene() == this) {
-//                        System.err.println("[A11y] 'node.getScene() == this' should never happen.");
-//                    }
-//                    acc.dispose();
-//                } else {
-//                    if (node.getScene() == this) {
-//                        node.accessible = acc;
-//                    } else {
-//                        acc.dispose();
-//                    }
-//                }
-//            }
-//            accMap.clear();
-//        }
-//    }
-//    
-//    private Accessible accessible;
-//
-//    /**
-//     * Experimental API - Do not use (will be removed).
-//     *
-//     * @treatAsPrivate
-//     */
-//    public Accessible getAccessible() {
-//        /*
-//         * The accessible for the Scene should never be
-//         * requested when the peer is not set.
-//         * This can only happen in a error case where a
-//         * descender of this Scene was not disposed and 
-//         * it still being used by the AT client and trying
-//         * to reach to the top level window.
-//         */
-//        if (impl_peer == null) return null;
-//        if (accessible == null) {
-//            accessible = new Accessible() {
-//                @Override public Object getAttribute(Attribute attribute,
-//                                                     Object... parameters) {
-//                    switch (attribute) {
-//                        case CHILDREN: {
-//                            Parent root = getRoot();
-//                            if (root != null) {
-//                                return FXCollections.observableArrayList(root);
-//                            }
-//                            break;
-//                        }
-//                        case TITLE: {
-//                            Window w = getWindow();
-//                            if (w instanceof Stage) {
-//                                return ((Stage)w).getTitle();
-//                            }
-//                            break;
-//                        }
-//                        case NODE_AT_POINT: {
-//                            Window window = getWindow();
-//                            /* is this screen to scene translation correct ? not considering camera ? */
-//                            Point2D pt = (Point2D)parameters[0];
-//                            PickResult res = pick(pt.getX() - getX() - window.getX(), pt.getY() - getY() - window.getY());
-//                            if (res != null) {
-//                                Node node = res.getIntersectedNode();
-//                                if (node != null) return node;
-//                            }
-//                            return getRoot();//not sure
-//                        }
-//                        case ROLE: return Role.PARENT;
-//                        case SCENE: return Scene.this;
-//                        case FOCUS_NODE: {
-//                            if (transientFocusContainer != null) {
-//                                return transientFocusContainer.accGetAttribute(Attribute.FOCUS_NODE);
-//                            }
-//                            return getFocusOwner();
-//                        }
-//                        default:
-//                    }
-//                    return super.getAttribute(attribute, parameters);
-//                }
-//            };
-//        }
-//        return accessible;
-//    }
+    private Map<Node, Accessible> accMap;
+    Accessible removeAccessible(Node node) {
+        if (accMap == null) return null;
+        return accMap.remove(node);
+    }
+
+    void addAccessible(Node node, Accessible acc) {
+        if (accMap == null) {
+            accMap = new HashMap<Node, Accessible>();
+        }
+        accMap.put(node, acc);
+    }
+
+    private void disposeAccessibles() {
+        if (accMap != null) {
+            for (Map.Entry<Node, Accessible> entry : accMap.entrySet()) {
+                Node node = entry.getKey();
+                Accessible acc = entry.getValue();
+                if (node.accessible != null) {
+                    /* This node has already been initialized to another scene.
+                     * Note an accessible can be returned to the node before the
+                     * pulse if getAccessible() is called. In which case it must 
+                     * already being removed from accMap.
+                     */
+                    if (node.accessible == acc) {
+                        System.err.println("[A11y] 'node.accessible == acc' should never happen.");
+                    }
+                    if (node.getScene() == this) {
+                        System.err.println("[A11y] 'node.getScene() == this' should never happen.");
+                    }
+                    acc.dispose();
+                } else {
+                    if (node.getScene() == this) {
+                        node.accessible = acc;
+                    } else {
+                        acc.dispose();
+                    }
+                }
+            }
+            accMap.clear();
+        }
+    }
+    
+    private Accessible accessible;
+
+    /**
+     * Experimental API - Do not use (will be removed).
+     *
+     * @treatAsPrivate
+     */
+    public Accessible getAccessible() {
+        /*
+         * The accessible for the Scene should never be
+         * requested when the peer is not set.
+         * This can only happen in a error case where a
+         * descender of this Scene was not disposed and 
+         * it still being used by the AT client and trying
+         * to reach to the top level window.
+         */
+        if (impl_peer == null) return null;
+        if (accessible == null) {
+            accessible = new Accessible() {
+                @Override public Object getAttribute(Attribute attribute,
+                                                     Object... parameters) {
+                    switch (attribute) {
+                        case CHILDREN: {
+                            Parent root = getRoot();
+                            if (root != null) {
+                                return FXCollections.observableArrayList(root);
+                            }
+                            break;
+                        }
+                        case TITLE: {
+                            Window w = getWindow();
+                            if (w instanceof Stage) {
+                                return ((Stage)w).getTitle();
+                            }
+                            break;
+                        }
+                        case NODE_AT_POINT: {
+                            Window window = getWindow();
+                            /* is this screen to scene translation correct ? not considering camera ? */
+                            Point2D pt = (Point2D)parameters[0];
+                            PickResult res = pick(pt.getX() - getX() - window.getX(), pt.getY() - getY() - window.getY());
+                            if (res != null) {
+                                Node node = res.getIntersectedNode();
+                                if (node != null) return node;
+                            }
+                            return getRoot();//not sure
+                        }
+                        case ROLE: return Role.PARENT;
+                        case SCENE: return Scene.this;
+                        case FOCUS_NODE: {
+                            if (transientFocusContainer != null) {
+                                return transientFocusContainer.accGetAttribute(Attribute.FOCUS_NODE);
+                            }
+                            return getFocusOwner();
+                        }
+                        default:
+                    }
+                    return super.getAttribute(attribute, parameters);
+                }
+            };
+        }
+        return accessible;
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/graphics/src/main/java/javafx/scene/accessibility/Accessible.java	Mon Jun 23 20:04:23 2014 -0700
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package javafx.scene.accessibility;
+
+import com.sun.glass.ui.PlatformAccessible;
+import com.sun.glass.ui.Application;
+
+/**
+ * Experimental API - Do not use (will be removed).
+ *
+ * @treatAsPrivate
+ */
+public abstract class Accessible {
+
+    private PlatformAccessible delegate;
+
+    public Accessible() {
+        delegate = Application.GetApplication().createAccessible(this);
+    }
+
+    public final void dispose() {
+        if (delegate != null) {
+            delegate.dispose();
+            delegate = null;
+        }
+    }
+
+    /**
+     * @treatAsPrivate implementation detail
+     * @deprecated This is an internal API that is not intended
+     * for use and will be removed in the next version
+     */
+    public final PlatformAccessible impl_getDelegate() {
+        return delegate;
+    }
+
+    /**
+     * This method is called by the AT to request the value for the given attribute.
+     *
+     * @see Attribute
+     * @param attribute the requested attribute
+     * @param parameters optional list of parameters
+     * @return the value for the requested attribute
+     */
+    public Object getAttribute(Attribute attribute, Object... parameters) {
+        return null;
+    }
+
+    /**
+     * This method is called by the AT to indicate the accessible to execute
+     * the given action.
+     *
+     * @see Action
+     * @param action the action to execute
+     * @param parameters optional list of parameters
+     */
+    public void executeAction(Action action, Object... parameters) {
+    }
+
+    /**
+     * This method is called by Accessible to notify the AT that
+     * the value for the given attribute has changed.
+     *
+     * @see Attribute
+     * @param notification the attribute which value has changed
+     */
+    public void sendNotification(Attribute notification) {
+        if (delegate != null) {
+            delegate.sendNotification(notification);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/graphics/src/main/java/javafx/scene/accessibility/Action.java	Mon Jun 23 20:04:23 2014 -0700
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package javafx.scene.accessibility;
+
+/**
+ * Experimental API - Do not use (will be removed).
+ *
+ * @treatAsPrivate
+ */
+public enum Action {
+
+    /**
+     * Selects the node whilst retaining all other selection in the container
+     * (assuming that the container supports multiple selection).
+     */
+    ADD_TO_SELECTION,
+
+    /**
+     * Decrements the node (if it support BLOCK_DECREMENT) by its larger block decrement
+     * value. A smaller decrement can be performed by using {@link #DECREMENT}.
+     */
+    BLOCK_DECREMENT,
+
+    /**
+     * Increments the node (if it support BLOCK_INCREMENT) by its larger block increment
+     * value. A smaller increment can be performed by using {@link #INCREMENT}.
+     */
+    BLOCK_INCREMENT,
+
+    COLLAPSE,
+
+    /**
+     * Decrements the node (if it support DECREMENT) by its smaller unit decrement
+     * value. A larger decrement can be performed by using {@link #BLOCK_DECREMENT}.
+     */
+    DECREMENT,
+
+    EXPAND,
+
+    FIRE,
+
+    /**
+     * Increments the node (if it support INCREMENT) by its smaller unit increment
+     * value. A larger increment can be performed by using {@link #BLOCK_INCREMENT}.
+     */
+    INCREMENT,
+
+    /**
+     * Moves the node (if it supports MOVE) by the provided x and y coordinates.
+     * Parameter: Double, Double
+     */
+    MOVE,
+
+    /**
+     * Deselects the node whilst retaining all other selection in the container.
+     */
+    REMOVE_FROM_SELECTION,
+
+    /**
+     * Requests that the given integer index is shown, if possible, by the
+     * container (e.g. ListView).
+     * Parameter: Integer
+     */
+    SCROLL_TO_INDEX,
+
+    /**
+     * Selects the node, clearing out all other selection in the container.
+     */
+    SELECT,
+
+    /**
+     * Sets the tile for a node.
+     * Parameter: String
+     */
+    SET_TITLE,
+
+    /**
+     * Sets the value for a node.
+     * Parameter: Double
+     */
+    SET_VALUE,
+
+    /**
+     * Request the receiver to show its menu.
+     */
+    SHOW_MENU,
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/graphics/src/main/java/javafx/scene/accessibility/Attribute.java	Mon Jun 23 20:04:23 2014 -0700
@@ -0,0 +1,477 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package javafx.scene.accessibility;
+
+import java.time.LocalDate;
+import javafx.collections.ObservableList;
+import javafx.geometry.Bounds;
+import javafx.geometry.Orientation;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.input.KeyCombination;
+import javafx.scene.text.Font;
+
+/**
+ * Experimental API - Do not use (will be removed).
+ *
+ * @treatAsPrivate
+ */
+public enum Attribute {
+
+    /**
+     * Returns the accelerator for the Node.
+     * Type: KeyCombination
+     */
+    ACCELERATOR("Accelerator", KeyCombination.class),
+
+    /**
+     * Returns the bounds for the Node.
+     * Type: Bounds
+     */
+    BOUNDS("Bounds", Bounds.class),
+
+    /**
+     * Returns the array of bounding rectangles for the given char range.
+     * Parameter: Integer range start
+     * Parameter: Integer range length
+     * Type: Bounds[]
+     */
+    BOUNDS_FOR_RANGE("BoundsForRange", Bounds[].class),
+
+    /**
+     * Returns the caret offset for the node.
+     * Type: Integer
+     */
+    CARET_OFFSET("CaretOffset", Integer.class),
+
+    /**
+     * Returns the children for the Node.
+     * Type: ObservableList&lt;Node&gt;
+     */
+    CHILDREN("Children", ObservableList.class),
+
+    /**
+     * Returns the column at the given index
+     * Parameter: Integer
+     * Type: Node
+     */
+    COLUMN_AT_INDEX("ColumnAtIndex", Node.class),
+
+    /**
+     * Returns the cell at the given row and column indices
+     * Parameter: Integer, Integer
+     * Type: Node
+     */
+    CELL_AT_ROW_COLUMN("CellAtRowColumn", Node.class),
+
+    /**
+     * Returns the column count
+     * Type: Integer
+     */
+    COLUMN_COUNT("ColumnCount", Integer.class),
+
+    /**
+     * Returns the column index of a cell
+     * Type: Integer
+     */
+    COLUMN_INDEX("ColumnIndex", Integer.class),
+
+    /**
+     * Returns the contents of a scroll pane
+     * Type: Node
+     */
+    CONTENTS("Contents", Node.class),
+
+    /**
+     * Returns the description for the Node.
+     * Type: String
+     */
+    DESCRIPTION("Description", String.class),
+
+    /**
+     * Depth of a row in a disclosure hierarchy.
+     * Type: Integer
+     */
+    DISCLOSURE_LEVEL("DisclosureLevel", Integer.class),
+
+    /**
+     * Returns the local date for the node.
+     * Type: LocalDate
+     */
+    DATE("Date", LocalDate.class),
+
+    /**
+     * Returns true if the node is editable.
+     * Type: Boolean
+     */
+    EDITABLE("Editable", Boolean.class),
+
+    /**
+     * Returns true if the Node is enabled.
+     * Type: Boolean
+     */
+    ENABLED("Enabled", Boolean.class),
+
+    /**
+     * Indicates if a popup is expanded.
+     * Type: Boolean
+     */
+    EXPANDED("Expanded", Boolean.class),
+
+    /**
+     * Returns the focus item.
+     * Type: Node
+     *
+     * Used for controls with items such TabPaneView, TableView, ListView, etc.
+     * It returns the exact Node within the control that has the focus.
+     */
+    FOCUS_ITEM("FocusItem", Node.class),
+
+    /**
+     * Returns the focus Node.
+     * Type: Node
+     *
+     * This attribute is requested to the Scene, where it maps to {@link Scene#focusOwnerProperty()}
+     * The Scene can delegate the request to its current transient focus container.
+     */
+    FOCUS_NODE("FocusNode", Node.class),
+
+    /**
+     * Returns true if the Node is focused.
+     * Type: Boolean
+     */
+    FOCUSED("Focused", Boolean.class),
+
+    /**
+     * Returns the font for the node
+     * Type: Font
+     */
+    FONT("Font", Font.class),
+
+    /**
+     * Returns the header for the node
+     * Type: Node
+     */
+    HEADER("Header", Node.class),
+
+    /**
+     * Returns the horizontal scroll bar of a scroll pane
+     * Type: Node
+     */
+    HORIZONTAL_SCROLLBAR("HorizontalScrollBar", Node.class),
+
+    /**
+     * Returns the indeterminate state for the node.
+     * Type: Boolean
+     */
+    INDETERMINATE("Indeterminate", Boolean.class),
+
+    /**
+     * Returns the index of a row or column
+     * Type: Integer
+     */
+    INDEX("Index", Integer.class),
+
+    /**
+     * Returns a Node that is a label for this control, or null.
+     * Type: Node
+     */
+    LABELED_BY("LabeledBy", Node.class),
+
+    /**
+     * Indicates whether a TreeItem is a leaf element or not.
+     * Type: Boolean
+     */
+    LEAF("Leaf", Boolean.class),
+
+    /**
+     * Returns the line start of the given line index.
+     * Parameter: Integer - line index
+     * Type: Integer
+     */
+    LINE_END("LineEnd", Integer.class),
+
+    /**
+     * Returns the line index of the given character offset.
+     * Parameter: Integer - character offset.
+     * Type: Integer
+     */
+    LINE_FOR_OFFSET("LineOffset", Integer.class),
+
+    /**
+     * Returns the line end of the given line index.
+     * Parameter: Integer - line index
+     * Type: Integer
+     */
+    LINE_START("LineStart", Integer.class),
+
+    /**
+     * Returns the min value for the node.
+     * Type: Double
+     */
+    MIN_VALUE("MinValue", Double.class),
+
+    /**
+     * Returns the max value for the node.
+     * Type: Double
+     */
+    MAX_VALUE("MaxValue", Double.class),
+
+    /**
+     * Returns the Menu.
+     * Type: Node
+     */
+    MENU("Menu", Node.class),
+
+    /**
+     * Returns the owner Menu.
+     * Type: Node
+     */
+    MENU_FOR("MenuFor", Node.class),
+
+    /**
+     * Returns the Menu Item Type.
+     * Type: Role
+     */
+    MENU_ITEM_TYPE("MenuItemType", Role.class),
+
+    /**
+     * Returns the mnemonic for the node.
+     * Type: String
+     */
+    MNEMONIC("Mnemonic", String.class),
+
+    /**
+     * Returns whether the control allows for multiple selection.
+     * Type: Boolean
+     */
+    MULTIPLE_SELECTION("MultipleSelection", Boolean.class),
+
+    /**
+     * Returns the Node at the given point location.
+     * Type: Node
+     * Parameters: Point2D
+     */
+    NODE_AT_POINT("NodeAtPoint", Node.class),
+
+    /**
+     * Returns the char offset at the given point location.
+     * Type: Integer
+     * Parameters: Point2D
+     */
+    OFFSET_AT_POINT("OffsetAtPoint", Integer.class),
+
+    /**
+     * Returns the orientation of a node
+     * Type: Orientation
+     */
+    ORIENTATION("Orientation", Orientation.class),
+
+    /**
+     * Return the overflow button for the Node.
+     * Type: Node
+     */
+    OVERFLOW_BUTTON("Overflow Button", Node.class),
+
+    /**
+     * Returns the pages for the Node.
+     * Type: ObservableList&lt;Node&gt;
+     */
+    PAGES("Pages", ObservableList.class),
+
+    /**
+     * Returns the parent for the Node.
+     * Type: Parent
+     */
+    PARENT("Parent", Parent.class),
+
+    /**
+     * Returns the role for the Node.
+     * Type: Role
+     */
+    ROLE("Role", Role.class),
+
+    /**
+     * Returns the row at the given index
+     * Parameter: Integer
+     * Type: Node
+     */
+    ROW_AT_INDEX("RowAtIndex", Node.class),
+
+    /**
+     * Returns the row count
+     * Type: Integer
+     */
+    ROW_COUNT("RowCount", Integer.class),
+
+    /**
+     * Returns the row index of a cell
+     * Type: Integer
+     */
+    ROW_INDEX("RowIndex", Integer.class),
+
+    /**
+     * Returns the scene for the Node.
+     * Type: Scene
+     */
+    SCENE("Scene", Scene.class),
+
+    /**
+     * Returns if the item is selected (in a radio group for example)
+     * Type: Boolean
+     */
+    SELECTED("Selected", Boolean.class),
+
+    /**
+     * Returns the list of selected cells
+     * Type: ObservableList&lt;Node&gt;
+     */
+    SELECTED_CELLS("SelectedCells", ObservableList.class),
+
+    /**
+     * Returns the selected pagination page item.
+     * Type: Node
+     */
+    SELECTED_PAGE("SelectedPage", Node.class),
+
+    /**
+     * Returns the list of selected rows
+     * Type: ObservableList&lt;Node&gt;
+     */
+    SELECTED_ROWS("SelectedRows", ObservableList.class),
+
+    /**
+     * Returns the selected tab item.
+     * Type: Node
+     */
+    SELECTED_TAB("SelectedTab", Node.class),
+
+    /**
+     * Returns the selection end for the node.
+     * Type: Integer
+     */
+    SELECTION_END("SelectionEnd", Integer.class),
+
+    /**
+     * Returns the selection start for the node.
+     * Type: Integer
+     */
+    SELECTION_START("SelectionStart", Integer.class),
+
+    /**
+     * Returns the tabs for the Node.
+     * Type: ObservableList&lt;Node&gt;
+     */
+    TABS("Tabs", ObservableList.class),
+
+    /**
+     * Returns the title for the Node.
+     * E.g.
+     * <ul>
+     * <li>ComboBox returns a string representation of its
+     * currently selected item.
+     * <li>TextField returns the text currently entered into it.
+     * </ul>
+     * Type: String
+     */
+    TITLE("Title", String.class),
+
+    /**
+     * The text of the Tooltip associated with a given node, although for now this
+     * is only supported on Control subclasses.
+     * Type: String
+     */
+    TOOLTIP("Tooltip", String.class),
+
+    /**
+     * Returns a tree item (Role.TREE_ITEM or Role.TREE_TABLE_ITEM) at the given
+     * index, relative to the tree item that this is called on. If this is called
+     * on a container (e.g. TreeView or TreeTableView), it will be called on the
+     * root tree item.
+     * Parameter: Integer
+     * Type: Node
+     */
+    TREE_ITEM_AT_INDEX("TreeItemAtIndex", Node.class),
+
+    /**
+     * Returns the number of tree items that are expanded descendants of the current
+     * tree item. If requested on a container (e.g. TreeView or TreeTableView),
+     * this will return the count from the root tree item.
+     * Type: Node
+     */
+    TREE_ITEM_COUNT("TreeItemCount", Integer.class),
+
+    /**
+     * Returns the parent of a Role.TREE_ITEM (as another Role.TREE_ITEM, or if
+     * there is no parent (e.g. it is the root node)), then return the parent
+     * node whatever it is (most probably Role.TREE_VIEW or Role.TREE_TABLE_VIEW)
+     * Type: Node
+     */
+    TREE_ITEM_PARENT("TreeItemParent", Node.class),
+
+    /**
+     * Returns the value for the node.
+     * Type: Double
+     */
+    VALUE("Value", Double.class),
+
+    /**
+     * Returns the vertical scroll bar of a scroll pane
+     * Type: Node
+     */
+    VERTICAL_SCROLLBAR("VerticalScrollBar", Node.class),
+
+    /**
+     * Returns if the visibility for the node.
+     * Type: Boolean
+     */
+    VISIBLE("VISIBLE", Boolean.class),
+
+    /**
+     * Indicates whether a Hyperlink has been visited or not.
+     * This is an undocumented Mac-only attribute.
+     * Type: Boolean
+     */
+    VISITED("Visited", Boolean.class),
+    ;
+
+    private String name;
+    private Class<?> returnClass;
+
+    Attribute(String name, Class<?> returnClass) {
+        this.name = name;
+        this.returnClass = returnClass;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Class<?> getReturnType() {
+        return returnClass;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/graphics/src/main/java/javafx/scene/accessibility/Role.java	Mon Jun 23 20:04:23 2014 -0700
@@ -0,0 +1,364 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package javafx.scene.accessibility;
+
+/**
+ * Experimental API - Do not use (will be removed).
+ *
+ * @treatAsPrivate
+ */
+public enum Role {
+
+    /**
+     * Button
+     * Attributes: TITLE
+     * Actions: FIRE
+     */
+    BUTTON,
+
+    /**
+     * CheckBox.
+     * Attributes: TITLE, SELECTED, INDETERMINATE
+     * Actions: FIRE
+     */
+    CHECKBOX,
+
+    /**
+     * ComboBox.
+     * Attributed:
+     * Actions:
+     */
+    COMBOBOX,
+
+    /**
+     * ContextMenu.
+     * Attributed:
+     * Actions:
+     */
+    CONTEXT_MENU,
+
+    /**
+     * DatePicker.
+     * Attributed: DATE, TITLE
+     * Actions:
+     */
+    DATE_PICKER,
+
+    /**
+     * Decrement button
+     *
+     */
+    DECREMENT_BUTTON,
+
+    /**
+     * Used by TreeView / TreeTableView to represent the arrow to the side of branches
+     * Attributes: (none)
+     * Actions: Fire
+     */
+    DISCLOSURE_NODE,
+
+    /**
+     * Header.
+     * Attributes: TITLE
+     * Actions: (none)
+     */
+    HEADER,
+
+    /**
+     * Hyperlink
+     * Attributes: TITLE
+     * Actions: FIRE
+     */
+    HYPERLINK,
+
+    /**
+     * Increment button
+     *
+     */
+    INCREMENT_BUTTON,
+
+    /**
+     * Image
+     * Attributes: TITLE
+     * Actions: (none)
+     */
+    IMAGE,
+
+    /**
+     * ListView
+     * Attributes: ROW_AT_INDEX, ROW_COUNT, SELECTED_ROWS, MULTIPLE_SELECTION,
+     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
+     * Actions: SCROLL_TO_INDEX
+     */
+    LIST_VIEW,
+
+    /**
+     * List Item
+     * Attributes: TITLE, INDEX, SELECTED
+     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
+     */
+    LIST_ITEM,
+
+    /**
+     * Menu Bar.
+     * Attributed:
+     * Actions:
+     */
+    MENU_BAR,
+
+    /**
+     * Menu Button.
+     * Attributed: TITLE.
+     * Actions: FIRE.
+     */
+    MENU_BUTTON,
+
+    /**
+     * Menu Item.
+     * Attributed: MENU_ITEM_TYPE, SELECTED, ACCELERATOR, TITLE
+     * Actions: FIRE
+     */
+    MENU_ITEM,
+
+    /**
+     * Node
+     * Attributes: PARENT, ROLE, SCENE, BOUNDS, ENABLED, FOCUS, VISIBLE, LABELED_BY
+     * Actions: (none)
+     */
+    NODE,
+
+    /**
+     * Page in a Pagination control
+     * Attributes: TITLE, Selected
+     * Actions: SELECT
+     */
+    PAGE,
+
+    /**
+     * Pagination
+     * Attributes: PAGES, SELECTED_PAGE
+     * Actions: (none)
+     */
+    PAGINATION,
+
+    /**
+     * Parent
+     * Attributes: CHILDREN
+     * Actions: (none)
+     */
+    PARENT,
+
+    /**
+     * Password Field
+     * Attributes: (none)
+     * Actions: (none)
+     */
+    PASSWORD_FIELD,
+
+    /**
+     * ProgressIndicator
+     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, INDETERMINATE
+     * Actions: (none)
+     */
+    PROGRESS_INDICATOR,
+
+    /**
+     * RadioButton
+     * Attributes: TITLE, SELECTED
+     * Actions: FIRE
+     */
+    RADIO_BUTTON,
+
+    /**
+     * Slider
+     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, ORIENTATION
+     * Actions: INCREMENT, DECREMENT, SET_VALUE
+     */
+    SLIDER,
+
+    /**
+     * Text
+     * Attributes: TITLE, SELECTION_START, SELECTION_SET
+     * Actions: SET_TITLE
+     */
+    TEXT,
+
+    /**
+     * Text Area
+     * Attributes: TITLE, SELECTION_START, SELECTION_SET
+     * Actions: SET_TITLE
+     */
+    TEXT_AREA,
+
+    /**
+     * Text Field
+     * Attributes: TITLE, SELECTION_START, SELECTION_SET
+     * Actions: SET_TITLE
+     */
+    TEXT_FIELD,
+
+    /**
+     * ToggleButton
+     * Attributes: TITLE, SELECTED
+     * Action: FIRE
+     */
+    TOGGLE_BUTTON,
+    
+    /**
+     * Tooltip
+     * Attributes: (none)
+     * Action: (none)
+     */
+    TOOLTIP,
+
+    /**
+     * ScrollBar
+     * Attributes: VALUE, MAX_VALUE, MIN_VALUE, ORIENTATION
+     * Actions: BLOCK_INCREMENT, INCREMENT, DECREMENT, BLOCK_DECREMENT, SET_VALUE
+     */
+    SCROLL_BAR,
+
+    /**
+     * ScrollPane
+     * Attributes: CONTENTS, HORIZONTAL_SCROLLBAR, VERTICAL_SCROLLBAR
+     * Actions: (none)
+     */
+    SCROLL_PANE,
+
+    /**
+     * SplitMenuButton
+     * Attributes: TITLE, EXPANDED.
+     * Actions: FIRE, EXPAND, COLLAPSE.
+     */
+    SPLIT_MENU_BUTTON,
+
+    /**
+     * Tab
+     * Attributes: TITLE, SELECTED
+     * Actions: SELECT
+     */
+    TAB_ITEM,
+
+    /**
+     * TabPane
+     * Attributes: TABS, SELECTED_TAB
+     * Actions: (none)
+     */
+    TAB_PANE,
+
+    /**
+     * Table Cell
+     * Attributes: TITLE, ROW_INDEX, COLUMN_INDEX, SELECTED
+     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
+     */
+    TABLE_CELL,
+
+    /**
+     * Table Column
+     * Attributes: TITLE, INDEX
+     * Actions: (none)
+     */
+    TABLE_COLUMN,
+
+    /**
+     * Table Row
+     * Attributes: TITLE, INDEX
+     * Actions: (none)
+     */
+    TABLE_ROW,
+
+    /**
+     * Table View
+     * Attributes: ROW_COUNT, COLUMN_COUNT, SELECTED_CELLS, CELL_AT_ROWCOLUMN, MULTIPLE_SELECTION,
+     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
+     * Attributes for header support: COLUMN_AT_INDEX, HEADER
+     * Actions: SCROLL_TO_INDEX
+     */
+    TABLE_VIEW,
+
+    /**
+     *
+     * Actions: MOVE
+     */
+    THUMB,
+
+    /**
+     * TitledPane
+     * Attributes: TITLE, EXPANDED
+     * Actions: EXPAND, COLLAPSE
+     */
+    TITLED_PANE,
+
+    /**
+     * Toolbar
+     * Attributes: OVERFLOW_BUTTON
+     * Actions: (none)
+     */
+    TOOLBAR,
+
+    /**
+     * Used by TreeView
+     * Attributes: TITLE, INDEX, SELECTED, EXPANDED, LEAF,
+     *             TREE_ITEM_COUNT, TREE_ITEM_AT_INDEX, TREE_ITEM_PARENT,
+     *             DISCLOSURE_LEVEL
+     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, EXPAND, COLLAPSE
+     */
+    TREE_ITEM,
+
+    /**
+     * TreeTable Cell
+     * Attributes: TITLE, ROW_INDEX, COLUMN_INDEX, SELECTED
+     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION
+     */
+    TREE_TABLE_CELL,
+
+    /**
+     * Used by TreeTableView
+     * Attributes: TITLE, INDEX, SELECTED, EXPANDED, LEAF,
+     *             TREE_ITEM_COUNT, TREE_ITEM_AT_INDEX,TREE_ITEM_PARENT,
+     *             DISCLOSURE_LEVEL
+     * Actions: SELECT, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, EXPAND, COLLAPSE
+     */
+    TREE_TABLE_ITEM,
+
+    /**
+     * Table View
+     * Attributes: ROW_COUNT, TREE_ITEM_AT_INDEX, COLUMN_COUNT,
+     *             SELECTED_CELLS, CELL_AT_ROWCOLUMN, MULTIPLE_SELECTION,
+     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
+     * Attributes for header support: COLUMN_AT_INDEX, HEADER
+     * Actions: SCROLL_TO_INDEX
+     */
+    TREE_TABLE_VIEW,
+
+    /**
+     * TreeView
+     * Attributes: ROW_COUNT, TREE_ITEM_AT_INDEX, SELECTED_ROWS, MULTIPLE_SELECTION,
+     *             VERTICAL_SCROLLBAR, HORIZONTAL_SCROLLBAR
+     * Actions: SCROLL_TO_INDEX
+     */
+    TREE_VIEW,
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/graphics/src/main/java/javafx/scene/accessibility/package.html	Mon Jun 23 20:04:23 2014 -0700
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
+  <title>javafx.scene.accessibility</title>
+</head>
+<body>
+<p>Provides the set of classes for accessibility support.</p>
+</body>
+</html>
--- a/modules/graphics/src/main/java/javafx/scene/image/ImageView.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/image/ImageView.java	Mon Jun 23 20:04:23 2014 -0700
@@ -46,8 +46,8 @@
 import javafx.geometry.NodeOrientation;
 import javafx.geometry.Rectangle2D;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -885,11 +885,11 @@
         return alg.processLeafNode(this, ctx);
     }
 
-//    /** @treatAsPrivate */
-//    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.IMAGE;
-//            default: return super.accGetAttribute(attribute, parameters); 
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.IMAGE;
+            default: return super.accGetAttribute(attribute, parameters); 
+        }
+    }
 }
--- a/modules/graphics/src/main/java/javafx/scene/text/Text.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/text/Text.java	Mon Jun 23 20:04:23 2014 -0700
@@ -46,8 +46,8 @@
 import javafx.beans.property.*;
 import javafx.css.*;
 import javafx.geometry.*;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 import javafx.scene.shape.LineTo;
@@ -397,7 +397,7 @@
                     if ((value == null) && !isBound()) {
                         set("");
                     }
-//                    accSendNotification(Attribute.TITLE);
+                    accSendNotification(Attribute.TITLE);
                 }
             };
         }
@@ -1737,7 +1737,7 @@
                         @Override public String getName() { return "impl_selectionStart"; }
                         @Override protected void invalidated() {
                             impl_markDirty(DirtyBits.TEXT_SELECTION);
-//                            accSendNotification(Attribute.SELECTION_START);
+                            accSendNotification(Attribute.SELECTION_START);
                         }
                 };
             }
@@ -1761,7 +1761,7 @@
                         @Override public String getName() { return "impl_selectionEnd"; }
                         @Override protected void invalidated() {
                             impl_markDirty(DirtyBits.TEXT_SELECTION);
-//                            accSendNotification(Attribute.SELECTION_END);
+                            accSendNotification(Attribute.SELECTION_END);
                         }
                     };
             }
@@ -1812,7 +1812,7 @@
                         @Override public Object getBean() { return Text.this; }
                         @Override public String getName() { return "impl_caretPosition"; }
                         @Override protected void invalidated() {
-//                            accSendNotification(Attribute.SELECTION_END);
+                            accSendNotification(Attribute.SELECTION_END);
                         }
                     };
             }
@@ -1888,89 +1888,89 @@
         return sb.append("]").toString();
     }
 
-//    /** @treatAsPrivate */
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TEXT;
-//            case TITLE: return getText();
-//            case FONT: return getFont();
-//            case CARET_OFFSET: {
-//                int sel = getImpl_caretPosition();
-//                if (sel >=  0) return sel;
-//                return getText().length();
-//            }
-//            case SELECTION_START: {
-//                int sel = getImpl_selectionStart();
-//                if (sel >=  0) return sel;
-//                sel = getImpl_caretPosition();
-//                if (sel >=  0) return sel;
-//                return getText().length();
-//            }
-//            case SELECTION_END:  {
-//                int sel = getImpl_selectionEnd();
-//                if (sel >=  0) return sel;
-//                sel = getImpl_caretPosition();
-//                if (sel >=  0) return sel;
-//                return getText().length();
-//            }
-//            case LINE_FOR_OFFSET: {
-//                int offset = (Integer)parameters[0];
-//                if (offset > getTextInternal().length()) return null;
-//                TextLine[] lines = getTextLayout().getLines();
-//                int lineIndex = 0;
-//                for (int i = 1; i < lines.length; i++) {
-//                    TextLine line = lines[i];
-//                    if (line.getStart() > offset) break;
-//                    lineIndex++;
-//                }
-//                return lineIndex;
-//            }
-//            case LINE_START: {
-//                int lineIndex = (Integer)parameters[0];
-//                TextLine[] lines = getTextLayout().getLines();
-//                if (0 <= lineIndex && lineIndex < lines.length) {
-//                    TextLine line = lines[lineIndex];
-//                    return line.getStart();
-//                }
-//                return null;
-//            }
-//            case LINE_END: {
-//                int lineIndex = (Integer)parameters[0];
-//                TextLine[] lines = getTextLayout().getLines();
-//                if (0 <= lineIndex && lineIndex < lines.length) {
-//                    TextLine line = lines[lineIndex];
-//                    return line.getStart() + line.getLength();
-//                }
-//                return null;
-//            }
-//            case OFFSET_AT_POINT: {
-//                Point2D point = (Point2D)parameters[0];
-//                point = screenToLocal(point);
-//                return impl_hitTestChar(point).getCharIndex();
-//            }
-//            case BOUNDS_FOR_RANGE: {
-//                int start = (Integer)parameters[0];
-//                int end = (Integer)parameters[1];
-//                PathElement[] elements = impl_getRangeShape(start, end + 1);
-//                /* Each bounds is defined by a MoveTo (top-left) followed by 
-//                 * 4 LineTo (to top-right, bottom-right, bottom-left, back to top-left).
-//                 */
-//                Bounds[] bounds = new Bounds[elements.length / 5];
-//                int index = 0;
-//                for (int i = 0; i < bounds.length; i++) {
-//                    MoveTo topLeft = (MoveTo)elements[index];
-//                    LineTo topRight = (LineTo)elements[index+1];
-//                    LineTo bottomRight = (LineTo)elements[index+2];
-//                    BoundingBox b = new BoundingBox(topLeft.getX(), topLeft.getY(), 
-//                                                    topRight.getX() - topLeft.getX(),
-//                                                    bottomRight.getY() - topRight.getY());
-//                    bounds[i] = localToScreen(b);
-//                    index += 5;
-//                }
-//                return bounds;
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TEXT;
+            case TITLE: return getText();
+            case FONT: return getFont();
+            case CARET_OFFSET: {
+                int sel = getImpl_caretPosition();
+                if (sel >=  0) return sel;
+                return getText().length();
+            }
+            case SELECTION_START: {
+                int sel = getImpl_selectionStart();
+                if (sel >=  0) return sel;
+                sel = getImpl_caretPosition();
+                if (sel >=  0) return sel;
+                return getText().length();
+            }
+            case SELECTION_END:  {
+                int sel = getImpl_selectionEnd();
+                if (sel >=  0) return sel;
+                sel = getImpl_caretPosition();
+                if (sel >=  0) return sel;
+                return getText().length();
+            }
+            case LINE_FOR_OFFSET: {
+                int offset = (Integer)parameters[0];
+                if (offset > getTextInternal().length()) return null;
+                TextLine[] lines = getTextLayout().getLines();
+                int lineIndex = 0;
+                for (int i = 1; i < lines.length; i++) {
+                    TextLine line = lines[i];
+                    if (line.getStart() > offset) break;
+                    lineIndex++;
+                }
+                return lineIndex;
+            }
+            case LINE_START: {
+                int lineIndex = (Integer)parameters[0];
+                TextLine[] lines = getTextLayout().getLines();
+                if (0 <= lineIndex && lineIndex < lines.length) {
+                    TextLine line = lines[lineIndex];
+                    return line.getStart();
+                }
+                return null;
+            }
+            case LINE_END: {
+                int lineIndex = (Integer)parameters[0];
+                TextLine[] lines = getTextLayout().getLines();
+                if (0 <= lineIndex && lineIndex < lines.length) {
+                    TextLine line = lines[lineIndex];
+                    return line.getStart() + line.getLength();
+                }
+                return null;
+            }
+            case OFFSET_AT_POINT: {
+                Point2D point = (Point2D)parameters[0];
+                point = screenToLocal(point);
+                return impl_hitTestChar(point).getCharIndex();
+            }
+            case BOUNDS_FOR_RANGE: {
+                int start = (Integer)parameters[0];
+                int end = (Integer)parameters[1];
+                PathElement[] elements = impl_getRangeShape(start, end + 1);
+                /* Each bounds is defined by a MoveTo (top-left) followed by 
+                 * 4 LineTo (to top-right, bottom-right, bottom-left, back to top-left).
+                 */
+                Bounds[] bounds = new Bounds[elements.length / 5];
+                int index = 0;
+                for (int i = 0; i < bounds.length; i++) {
+                    MoveTo topLeft = (MoveTo)elements[index];
+                    LineTo topRight = (LineTo)elements[index+1];
+                    LineTo bottomRight = (LineTo)elements[index+2];
+                    BoundingBox b = new BoundingBox(topLeft.getX(), topLeft.getY(), 
+                                                    topRight.getX() - topLeft.getX(),
+                                                    bottomRight.getY() - topRight.getY());
+                    bounds[i] = localToScreen(b);
+                    index += 5;
+                }
+                return bounds;
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }
--- a/modules/graphics/src/main/java/javafx/scene/text/TextFlow.java	Mon Jun 23 17:19:15 2014 -0700
+++ b/modules/graphics/src/main/java/javafx/scene/text/TextFlow.java	Mon Jun 23 20:04:23 2014 -0700
@@ -37,8 +37,8 @@
 import javafx.geometry.Orientation;
 import javafx.geometry.VPos;
 import javafx.scene.Node;
-//import javafx.scene.accessibility.Attribute;
-//import javafx.scene.accessibility.Role;
+import javafx.scene.accessibility.Attribute;
+import javafx.scene.accessibility.Role;
 import javafx.scene.layout.Pane;
 import javafx.css.StyleableDoubleProperty;
 import javafx.css.StyleableObjectProperty;
@@ -553,22 +553,22 @@
     }
     /* end of copied code */
 
-//    /** @treatAsPrivate */
-//    @Override
-//    public Object accGetAttribute(Attribute attribute, Object... parameters) {
-//        switch (attribute) {
-//            case ROLE: return Role.TEXT;
-//            case TITLE: {
-//                StringBuilder title = new StringBuilder();
-//                for (Node node: getChildren()) {
-//                    Object text = node.accGetAttribute(Attribute.TITLE, parameters);
-//                    if (text != null) {
-//                        title.append(text.toString());
-//                    }
-//                }
-//                return title.toString();
-//            }
-//            default: return super.accGetAttribute(attribute, parameters);
-//        }
-//    }
+    /** @treatAsPrivate */
+    @Override
+    public Object accGetAttribute(Attribute attribute, Object... parameters) {
+        switch (attribute) {
+            case ROLE: return Role.TEXT;
+            case TITLE: {
+                StringBuilder title = new StringBuilder();
+                for (Node node: getChildren()) {
+                    Object text = node.accGetAttribute(Attribute.TITLE, parameters);
+                    if (text != null) {
+                        title.append(text.toString());
+                    }
+                }
+                return title.toString();
+            }
+            default: return super.accGetAttribute(attribute, parameters);
+        }
+    }
 }