private void initialize() {
		// We want to load our state after we have been associated with a DockingWindowManager. 
		// If the table is displayable, then we are properly setup...
		if (table.isDisplayable()) {
			restoreState();
			return;
		}

		// ...otherwise, we are using this listener to know when the table has been added to 
		// the component hierarchy, as it has been connected to a DockingWindowManager by then.
		table.addHierarchyListener(new HierarchyListener() {
			@Override
			public void hierarchyChanged(HierarchyEvent e) {
				long changeFlags = e.getChangeFlags();
				if (HierarchyEvent.DISPLAYABILITY_CHANGED == (changeFlags &
					HierarchyEvent.DISPLAYABILITY_CHANGED)) {

					// check for the first time we are put together                    
					if (table.isDisplayable()) {
						restoreState();
						table.removeHierarchyListener(this); // cleanup
					}
				}
			}
		});
	}
Users of this class will implement this method to know when to use their table to perform
navigation tasks in their own way.
Ghidra/Features/Base/src/main/java/ghidra/util/table/AbstractSelectionNavigationAction.java