@Override protected void updateItem(JList list, Object value) { if (value instanceof IcyColorMap) { final IcyColorMap colormap = (IcyColorMap) value; final JComboBox comboBox = getComboBox(); final Dimension dim = comboBox.getSize(); int btnWidth; try { // a bit ugly but we really want to access it final JButton popBtn = (JButton) ReflectionUtil.getFieldObject(comboBox.getUI(), "arrowButton", true); btnWidth = popBtn.getWidth(); if (btnWidth <= 0) btnWidth = popBtn.getPreferredSize().width; if (btnWidth <= 0) btnWidth = 20; } catch (Exception e) { btnWidth = 20; } final Insets insets = getInsets(); dim.width -= btnWidth + insets.left + insets.right; dim.height -= insets.top + insets.bottom + 2; setIcon(new ColormapIcon(colormap, dim.width, dim.height)); setText(""); setToolTipText("Set " + colormap.getName() + " colormap"); setEnabled(list.isEnabled()); setFont(list.getFont()); } else super.updateItem(list, value); }
/** * Return true if the colormap has the same type and same color intensities than specified one. */ @Override public boolean equals(Object obj) { if (obj instanceof IcyColorMap) { final IcyColorMap colormap = (IcyColorMap) obj; if (colormap.getType() != type) return false; if (!Arrays.equals(red.map, colormap.red.map)) return false; if (!Arrays.equals(green.map, colormap.green.map)) return false; if (!Arrays.equals(blue.map, colormap.blue.map)) return false; if (!Arrays.equals(gray.map, colormap.gray.map)) return false; if (!Arrays.equals(alpha.map, colormap.alpha.map)) return false; return true; } return super.equals(obj); }