public void installNavigation(ServiceProvider sp) {

		if (sp == null) {
			Msg.error(this,
				"Attempt to install navigation on this table failed; service provider is null");
			return;
		}

		if (navigationKeyListener == null) {
			navigationKeyListener = new KeyAdapter() {
				@Override
				public void keyPressed(KeyEvent e) {
					if (e.getKeyCode() == KeyEvent.VK_ENTER) {
						int selectedRow = getSelectedRow();
						int selectedColumn = getSelectedColumn();
						if (selectedRow < 0 || selectedColumn < 0) {
							return;
						}
						navigate(selectedRow, selectedColumn);
						e.consume();
					}
				}
			};

			addKeyListener(navigationKeyListener);

			navigationMouseListener = new MouseAdapter() {
				@Override
				public void mouseReleased(MouseEvent e) {
					if (e.getClickCount() == 2 && !isEditing()) {
						Point point = e.getPoint();
						navigate(rowAtPoint(point), columnAtPoint(point));
					}
				}
			};

			addMouseListener(navigationMouseListener);

			navigationSelectionListener = new SelectionListener();
			selectionModel.addListSelectionListener(navigationSelectionListener);
		}

		this.serviceProvider = sp;
	}
Sets the service provider to use when navigation is enabled on this table.
<p>
The service provider will be used to retrieve the {@link GoToService}, as needed after the
system has been initialized.

@param sp the service provider
Ghidra/Features/Base/src/main/java/ghidra/util/table/GhidraTable.java