package com.ibm.nmon.gui.util; import java.util.TimeZone; import java.util.Vector; import java.awt.Component; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListCellRenderer; import javax.swing.JComboBox; import javax.swing.JList; import com.ibm.nmon.util.TimeZoneFactory; /** * Combo box that displays all timezones defined by {@link TimeZoneFactory}. */ public final class TimeZoneComboBox extends JComboBox<TimeZone> { private static final long serialVersionUID = 891428964072063630L; // use a vector here as a small memory savings since DefaultComboBoxModel does not copy the // vector but it would create a new Vector internally if passed an array of Strings private static final Vector<TimeZone> TIMEZONES = new Vector<TimeZone>(TimeZoneFactory.TIMEZONES); public TimeZoneComboBox(TimeZone timeZone) { super(new DefaultComboBoxModel<TimeZone>(TIMEZONES)); setRenderer(timeZoneListRenderer); setSelectedItem(timeZone); } public TimeZone getSelectedTimeZone() { return (TimeZone) getSelectedItem(); } private static final DefaultListCellRenderer timeZoneListRenderer = new DefaultListCellRenderer() { private static final long serialVersionUID = -8260612801301966258L; @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); setText(((TimeZone) value).getID()); return c; } }; }