Package com.studentgui.apppages
Class ScreenReader
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
com.studentgui.apppages.ScreenReader
- All Implemented Interfaces:
DateChangeListener,StudentChangeListener,ImageObserver,MenuContainer,Serializable,Accessible
Screen reader proficiency assessment page for desktop/laptop environments.
Evaluates student competency with screen reading software (JAWS, NVDA, Narrator, VoiceOver macOS) across 28 standardized skills organized into 4 progressive competency phases:
- Phase 1 (P1_1–P1_6): Fundamental Navigation and Interaction
- Basic keyboard navigation (Tab, arrow keys, application switching)
- Reading and interpreting control labels and text content
- Activating controls (buttons, links, checkboxes) via keyboard
- Form entry (text fields, combo boxes, radio buttons)
- Table navigation (row/column movement, header announcement)
- Heading navigation (H key, heading list, semantic structure)
- Phase 2 (P2_1–P2_4): Web and Document Element Navigation
- Link navigation and link list usage
- List navigation (ordered, unordered, nested lists)
- Image handling (alt text, long descriptions, graphics navigation)
- Annotation and metadata awareness (ARIA labels, landmarks)
- Phase 3 (P3_1–P3_11): Advanced Document Structures and Customization
- Document structure navigation (sections, articles, landmarks)
- Style and formatting awareness (bold, italic, font changes)
- Advanced table navigation (complex tables, merged cells, formulas)
- Chart and graph interpretation with screen reader feedback
- Advanced keyboard shortcuts and quick navigation commands
- Scripting usage (JAWS scripts, NVDA add-ons)
- Third-party application integration (Office, Adobe, IDEs)
- Multimedia content handling (audio descriptions, video captions)
- Braille display usage and synchronization
- Braille table switching (Grade 1, Grade 2, computer braille)
- Configuration and customization (speech rate, verbosity, sounds)
- Phase 4 (P4_1–P4_7): Efficiency, Troubleshooting, and Integration
- Performance optimization (adjusting verbosity, quick navigation mastery)
- Error recovery strategies (finding lost focus, restarting speech)
- Integration across multiple assistive technologies (magnification, braille, OCR)
- Accessibility API awareness (UI Automation, MSAA, IAccessible2)
- Settings management (profiles, application-specific configurations)
- Profile creation and switching for different workflows/applications
- Accessing vendor support resources and community forums
Data Persistence and Report Generation:
- Scores captured via
PhaseScoreFieldcomponents (integer 0–4 typical) - Persisted to normalized schema via
Database.insertAssessmentResults(int, int, java.lang.String[], int[]) - JSON export:
StudentDataFiles/<student>/Sessions/ScreenReader/ScreenReader-<sessionId>-<timestamp>.json - Phase-grouped time-series PNG plots:
plots/ScreenReader-<sessionId>-<date>-P<N>.png(4 phase groups) - Markdown report:
reports/ScreenReader-<sessionId>-<date>.mdwith relative image links - HTML report:
reports/ScreenReader-<sessionId>-<date>.htmlwith inline styles and legends
The shared JLineGraph visualizes recent session trends with phase-based grouping.
Implements DateChangeListener and StudentChangeListener
for dynamic refresh when global selections change.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionScreenReader(String studentName, LocalDate date, JLineGraph lineGraph) Construct a ScreenReader page bound to a student and date. -
Method Summary
Modifier and TypeMethodDescriptionvoiddateChanged(LocalDate newDate) Called when the application date has been changed by the user.voidstudentChanged(String newStudent) Called when the application selected student has changed.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
ScreenReader
Construct a ScreenReader page bound to a student and date. The provided JLineGraph is used to render recent assessment results.- Parameters:
studentName- the student display name (may be null to indicate no selection)date- the date associated with the sessionlineGraph- chart component used to display recent results
-
-
Method Details
-
dateChanged
Description copied from interface:DateChangeListenerCalled when the application date has been changed by the user.- Specified by:
dateChangedin interfaceDateChangeListener- Parameters:
newDate- the newly selected date
-
studentChanged
Description copied from interface:StudentChangeListenerCalled when the application selected student has changed.- Specified by:
studentChangedin interfaceStudentChangeListener- Parameters:
newStudent- the newly selected student's display name (may be null)
-