@Override protected boolean customizeNonPsiElementLeftRenderer( ColoredListCellRenderer renderer, JList list, Object value, int index, boolean selected, boolean hasFocus) { if (!(value instanceof NavigationItem)) return false; NavigationItem item = (NavigationItem) value; TextAttributes attributes = getNavigationItemAttributes(item); SimpleTextAttributes nameAttributes = attributes != null ? SimpleTextAttributes.fromTextAttributes(attributes) : null; Color color = list.getForeground(); if (nameAttributes == null) nameAttributes = new SimpleTextAttributes(Font.PLAIN, color); renderer.append(item + " ", nameAttributes); ItemPresentation itemPresentation = item.getPresentation(); assert itemPresentation != null; renderer.setIcon(itemPresentation.getIcon(true)); String locationString = itemPresentation.getLocationString(); if (!StringUtil.isEmpty(locationString)) { renderer.append(locationString, new SimpleTextAttributes(Font.PLAIN, JBColor.GRAY)); } return true; }
@Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (myColorDescriptor != null) { final int size = getBounds().height; g.setColor(getBackground()); g.fillRect(0, 0, size + getIconTextGap() + 1, size); g.setColor(myColorDescriptor.getResolvedColor()); g.fillRect(2, 2, size - 4, size - 4); g.setColor(Color.BLACK); g.drawRect(2, 2, size - 4, size - 4); } }
public PaletteItemsComponent(PaletteGroup group) { myGroup = group; setModel( new AbstractListModel() { @Override public int getSize() { return myGroup.getItems().size(); } @Override public Object getElementAt(int index) { return myGroup.getItems().get(index); } }); ColoredListCellRenderer renderer = new ColoredListCellRenderer() { @Override protected void customizeCellRenderer( JList list, Object value, int index, boolean selected, boolean hasFocus) { clear(); PaletteItem item = (PaletteItem) value; setIcon(item.getIcon()); String title = item.getTitle(); append(title, SimpleTextAttributes.REGULAR_ATTRIBUTES); String tooltip = item.getTooltip(); String version = item.getVersion(); if (version == null) { version = ""; } else { version = "<sup><i>" + version + "</i></sup>"; } if (tooltip != null) { tooltip = "<html><body><center><b>" + StringUtil.escapeXml(title) + "</b>" + version + "</center><p style='width: 300px'>" + tooltip + "</p></body></html>"; } setToolTipText(tooltip); } }; renderer.getIpad().left = UIUtil.getTreeLeftChildIndent(); renderer.getIpad().right = UIUtil.getTreeRightChildIndent(); setCellRenderer(renderer); setVisibleRowCount(0); setLayoutOrientation(HORIZONTAL_WRAP); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); addMouseListener( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { myNeedClearSelection = SwingUtilities.isLeftMouseButton(e) && myBeforeClickSelectedRow >= 0 && locationToIndex(e.getPoint()) == myBeforeClickSelectedRow && !UIUtil.isControlKeyDown(e) && !e.isShiftDown(); } @Override public void mouseReleased(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e) && myBeforeClickSelectedRow >= 0 && locationToIndex(e.getPoint()) == myBeforeClickSelectedRow && !UIUtil.isControlKeyDown(e) && !e.isShiftDown() && myNeedClearSelection) { clearSelection(); } } }); initActions(); }