View Javadoc

1   package com.melloware.jukes.gui.view.component;
2   
3   import java.awt.Component;
4   
5   import javax.swing.JLabel;
6   import javax.swing.JList;
7   import javax.swing.ListCellRenderer;
8   
9   import com.melloware.jukes.db.orm.Track;
10  import com.melloware.jukes.gui.tool.Settings;
11  
12  /**
13   * Custom PlaylistCellRenderer used to display playlist Tracks in JList.
14   * <p>
15   * Copyright (c) 1999-2007 Melloware, Inc. <http://www.melloware.com>
16   * @author Emil A. Lefkof III <info@melloware.com>
17   * @version 4.0
18   */
19  public final class PlaylistCellRenderer
20      extends JLabel
21      implements ListCellRenderer {
22  
23      public final Settings settings;
24  
25      /**
26       * Default Constructor
27       */
28      public PlaylistCellRenderer() {
29          super();
30          this.settings = null;
31      }
32  
33      /**
34       * Default Constructor
35       */
36      public PlaylistCellRenderer(Settings aSettings) {
37          super();
38          this.settings = aSettings;
39      }
40  
41      /* (non-Javadoc)
42       * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean,
43       * boolean)
44       */
45      public Component getListCellRendererComponent(final JList list,
46                                                    final Object value,
47                                                    final int index,
48                                                    final boolean isSelected,
49                                                    final boolean cellHasFocus) {
50  
51          final Track track = (Track)value;
52  
53          // pad the display with two spaces for readability
54          final StringBuffer sbText = new StringBuffer();
55          sbText.append(' ');
56          sbText.append(track.getDisc().getArtist().getName());
57          sbText.append(" - ");
58          sbText.append(track.getName());
59          sbText.append("  (");
60          sbText.append(track.getDurationTime());
61          sbText.append(") ");
62          this.setText(sbText.toString());
63          
64          // set the tooltip text
65          final StringBuffer sbTooltip = new StringBuffer();
66          sbTooltip.append(' ');
67          sbTooltip.append(track.getDisc().getArtist().getName());
68          sbTooltip.append(" - ");
69          sbTooltip.append(track.getDisc().getName());
70          sbTooltip.append(" - ");
71          sbTooltip.append(track.getName());
72          sbTooltip.append("  [");
73          sbTooltip.append(track.getDurationTime());
74          sbTooltip.append("] ");
75          this.setToolTipText(sbTooltip.toString());
76          
77          if (isSelected) {
78              setBackground(list.getSelectionBackground());
79              setForeground(list.getSelectionForeground());
80          } else {
81              setBackground(list.getBackground());
82              setForeground(list.getForeground());
83          }
84          setEnabled(list.isEnabled());
85          setOpaque(true);
86          return this;
87      }
88  
89  }