private JPanel createColorValuePanel() {

		//
		// The Color Value Panel shows allows the user to enter colors by name, hex or rgb.   It
		// also displays the current chooser color value in a label that can be double-clicked to
		// copy the color info.
		//
		// The layout:
		// - Box of 2 items from left to right
		//  	Label
		// 		Text Field + Description
		//
		// - The second box is laid out from top to bottom
		// 		Text Field on top
		// 		Description label on bottom
		//
		JPanel colorValuePanel = new JPanel();
		colorValuePanel.setLayout(new BoxLayout(colorValuePanel, BoxLayout.LINE_AXIS));
		JPanel colorTextPanel = new JPanel();
		colorTextPanel.setLayout(new BoxLayout(colorTextPanel, BoxLayout.PAGE_AXIS));

		colorNameField = new JTextField(20);
		colorNameField.addKeyListener(new KeyAdapter() {

			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
					updateColorFromColorNameField();
					e.consume();
				}
			}
		});
		Document document = colorNameField.getDocument();
		colorNameListener = new ColorNameListener();
		document.addDocumentListener(colorNameListener);

		GLabel colorNameLabel = new GLabel("Color Name: ");
		String colorNameTip = "Enter a Web Color name or a color value";

		colorValueLabel = new GDLabel();
		colorValueLabel.setForeground(Messages.HINT);
		colorValueLabel.setToolTipText("Double-click to copy color info");
		colorValueLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					Color color = getColorFromModel();
					String text =
						WebColors.toHexString(color).toUpperCase() + "  " +
							WebColors.toRgbString(color);
					String colorName = WebColors.toColorName(color);
					if (colorName != null) {
						text += "  " + colorName;
					}
					Clipboard systemClipboard = GClipboard.getSystemClipboard();
					StringTransferable transferable = new StringTransferable(text);
					systemClipboard.setContents(transferable, null);
				}
			}
		});

		colorValueLabel.setText("    "); // this creates the correct vertical spacing when empty

		ColorSelectionModel model = getColorSelectionModel();
		colorValueUpdateListener = e -> {

			Color color = getColorFromModel();
			recentSwatchPanel.setMostRecentColor(color);

			String text = WebColors.toHexString(color) + "  " + WebColors.toRgbString(color);
			String colorName = WebColors.toColorName(color);
			colorValueLabel.setToolTipText(colorName);
			colorValueLabel.setText(text);
		};
		model.addChangeListener(colorValueUpdateListener);

		colorNameLabel.setToolTipText(colorNameTip);
		colorNameField.setToolTipText(colorNameTip);

		JPanel colorTextParentPanel = new JPanel(); // flow layout to center on x-axis
		colorTextParentPanel.add(colorValueLabel);

		colorTextPanel.add(colorNameField);
		colorTextPanel.add(colorTextParentPanel);

		// add space between the text field and this label
		colorNameLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 5));

		// align both left-to-right items at the top of the container
		colorNameLabel.setAlignmentY(0);
		colorTextPanel.setAlignmentY(0);

		colorValuePanel.add(colorNameLabel);
		colorValuePanel.add(colorTextPanel);

		// add space between swatch and this panel
		colorValuePanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
		return colorValuePanel;
	}
The background color, foreground color, and font are already set to the
defaults from the defaults table before this method is called.
Ghidra/Framework/Docking/src/main/java/docking/options/editor/SettableColorSwatchChooserPanel.java