private void addSendSelectedToClipboardAction() {
		sendSelectedToClipboardAction = new DockingAction("Send Selected to Clipboard", title) {
			@Override
			public void actionPerformed(ActionContext context) {
				List<ByteSequenceRowObject> rows = byteSequenceTable.getLastSelectedObjects();
				for (ByteSequenceRowObject row : rows) {
					DittedBitSequence seq = new DittedBitSequence(row.getSequence(), true);
					PatternInfoRowObject pattern = new PatternInfoRowObject(type, seq, cRegFilter);
					pattern.setNote(row.getDisassembly());
					plugin.addPattern(pattern);
				}
				plugin.updateClipboard();
			}

			@Override
			public boolean isEnabledForContext(ActionContext context) {
				List<ByteSequenceRowObject> rows = byteSequenceTable.getLastSelectedObjects();
				if (rows == null) {
					return false;
				}
				if (rows.isEmpty()) {
					return false;
				}
				return true;
			}

			@Override
			public boolean isAddToPopup(ActionContext context) {
				return true;
			}
		};

		Icon icon = new GIcon("icon.bytepatterns.send.to.clipboard");
		sendSelectedToClipboardAction.setPopupMenuData(
			new MenuData(new String[] { "Send Selected to Clipboard" }, icon));
		sendSelectedToClipboardAction
				.setDescription("Creates patterns for the currently-selected strings of " +
					"bytes and sends them to the clipboard");
		sendSelectedToClipboardAction.setHelpLocation(
			new HelpLocation("FunctionBitPatternsExplorerPlugin", "Analyzing_Byte_Sequences"));
		this.addAction(sendSelectedToClipboardAction);
	}
Creates a dialog for analyzing sequences of bytes.
@param title dialog title
@param plugin plugin
@param rowObjects row objects representing sequences to analyze
@param parent parent component
@param type type of sequences
@param cRegFilter context register filter
@param note note for clipboard
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/ByteSequenceAnalyzerProvider.java