//********************************************************************** // //<copyright> // //BBN Technologies //10 Moulton Street //Cambridge, MA 02138 //(617) 873-8000 // //Copyright (C) BBNT Solutions LLC. All rights reserved. // //</copyright> //********************************************************************** // //$Source: ///cvs/darwars/ambush/aar/src/com/bbn/ambush/mission/MissionHandler.java,v //$ //$RCSfile: MissionHandler.java,v $ //$Revision: 1.10 $ //$Date: 2004/10/21 20:08:31 $ //$Author: dietrick $ // //********************************************************************** package com.bbn.openmap.gui.event; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.Properties; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import com.bbn.openmap.event.OMEvent; import com.bbn.openmap.gui.OMComponentPanel; import com.bbn.openmap.omGraphics.DrawingAttributes; import com.bbn.openmap.util.ComponentFactory; import com.bbn.openmap.util.PropUtils; public class EventListCellRenderer extends OMComponentPanel implements ListCellRenderer { protected JLabel label = new JLabel(); protected JLabel timeMark = new JLabel(); protected JLabel ratingMark = new JLabel(); public Color fontColor = Color.BLACK; public Color altFontColor = Color.BLACK; public Color selectColor = Color.GRAY; public Color timeWindowColor = Color.LIGHT_GRAY; public Color regularBackgroundColor = Color.WHITE; public static final String FontColorProperty = "fontColor"; public static final String AltFontColorProperty = "altFontColor"; public static final String SelectColorProperty = "selectColor"; public static final String TimeWindowColorProperty = "timeWindowColor"; public static final String BackgroundColorProperty = "color"; public static final String IconPackageClassProperty = "iconPackageClass"; /** * This cell renderer is pretty closely tied to the icon package. If you * want to change one, you'll probably want to change the other, too. */ protected EventListIconPackage iconPackage; public EventListCellRenderer() { init(); } protected void init() { removeAll(); setOpaque(true); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1.0f; gridbag.setConstraints(label, c); this.add(label); c.fill = GridBagConstraints.NONE; c.weightx = 0f; gridbag.setConstraints(ratingMark, c); this.add(ratingMark); gridbag.setConstraints(timeMark, c); this.add(timeMark); Font f = label.getFont(); f = new Font(f.getName(), f.getStyle(), f.getSize() - 1); label.setFont(f); // This gets icon package set up setPreferredSize(new Dimension(20, getIconPackage().getButtonSize())); } public EventListIconPackage getIconPackage() { if (iconPackage == null) { iconPackage = new EventListIconPackage(); } return iconPackage; } public void setIconPackage(EventListIconPackage iconPackage) { this.iconPackage = iconPackage; } public void setProperties(String prefix, Properties props) { super.setProperties(prefix, props); prefix = PropUtils.getScopedPropertyPrefix(prefix); fontColor = (Color) PropUtils.parseColorFromProperties(props, prefix + FontColorProperty, fontColor); altFontColor = (Color) PropUtils.parseColorFromProperties(props, prefix + AltFontColorProperty, altFontColor); selectColor = (Color) PropUtils.parseColorFromProperties(props, prefix + SelectColorProperty, selectColor); timeWindowColor = (Color) PropUtils.parseColorFromProperties(props, prefix + TimeWindowColorProperty, timeWindowColor); regularBackgroundColor = (Color) PropUtils.parseColorFromProperties(props, prefix + BackgroundColorProperty, regularBackgroundColor); String crc = props.getProperty(prefix + IconPackageClassProperty); if (crc != null) { iconPackage = (EventListIconPackage) ComponentFactory.create(crc, prefix, props); init(); } } public DrawingAttributes setRenderingAttributes( DrawingAttributes drawingAttributes) { if (drawingAttributes == null) { drawingAttributes = DrawingAttributes.getDefaultClone(); } drawingAttributes.setFillPaint(regularBackgroundColor); drawingAttributes.setSelectPaint(selectColor); drawingAttributes.setLinePaint(fontColor); drawingAttributes.setMattingPaint(timeWindowColor); return drawingAttributes; } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { label.setText(value.toString()); if (value instanceof OMEvent) { OMEvent OMe = (OMEvent) value; isSelected = OMe.getAttribute(OMEvent.ATT_KEY_SELECTED) != null; timeMark.setIcon(OMe.getAttribute(OMEvent.ATT_KEY_PLAY_FILTER) == Boolean.TRUE ? iconPackage.clockImage : iconPackage.invisibleImage); Object rating = OMe.getAttribute(OMEvent.ATT_KEY_RATING); if (rating == OMEvent.ATT_VAL_BAD_RATING) { ratingMark.setIcon(iconPackage.thumbsDownImage); } else if (rating == OMEvent.ATT_VAL_GOOD_RATING) { ratingMark.setIcon(iconPackage.thumbsUpImage); } else { ratingMark.setIcon(iconPackage.invisibleImage); } if (OMe.isAtCurrentTime()) { if (isSelected) { setBackground(selectColor); } else { setBackground(timeWindowColor); } setForeground(altFontColor); return this; } } else { timeMark.setIcon(iconPackage.invisibleImage); ratingMark.setIcon(iconPackage.invisibleImage); } setBackground(isSelected ? selectColor : regularBackgroundColor); setForeground(isSelected ? altFontColor : fontColor); return this; } }