package org.geogebra.desktop.gui.util; import java.awt.Component; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JSeparator; import javax.swing.ListCellRenderer; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; /** * List or ComboBox renderer that supports a separator element. * * @author G. Sturr * */ // ============================================================ // ComboBox Renderer with SEPARATOR // ============================================================ public class ListSeparatorRenderer extends JLabel implements ListCellRenderer { private static final long serialVersionUID = 1L; public static final String SEPARATOR = "---"; JSeparator separator; public ListSeparatorRenderer() { setOpaque(true); setBorder(new EmptyBorder(1, 1, 1, 1)); separator = new JSeparator(SwingConstants.HORIZONTAL); } @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String str = (value == null) ? "" : value.toString(); if (SEPARATOR.equals(str)) { return separator; } if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } setFont(list.getFont()); setText(str); return this; } }