001package jmri.jmrix.sprog.update;
002
003import javax.swing.JOptionPane;
004import jmri.jmrix.sprog.SprogSystemConnectionMemo;
005import org.slf4j.Logger;
006import org.slf4j.LoggerFactory;
007
008/**
009 * Display the firmware version of the attached SPROG hardware.
010 *
011 * @author Andrew Crosland Copyright (C) 2008
012 */
013public class SprogVersionFrame extends jmri.util.JmriJFrame implements SprogVersionListener {
014
015    private SprogSystemConnectionMemo _memo = null;
016
017    public SprogVersionFrame(SprogSystemConnectionMemo memo) {
018        super();
019        _memo = memo;
020    }
021
022    /** 
023     * {@inheritDoc}
024     */
025    @Override
026    synchronized public void initComponents() {
027        setTitle(Bundle.getMessage("SprogVersionTitle"));
028
029        // add help menu to window
030        addHelpMenu("package.jmri.jmrix.sprog.update.SprogVersionFrame", true);
031
032        // Start the query
033        SprogVersionQuery query = _memo.getSprogVersionQuery();
034        query.requestVersion(this);
035    }
036
037    /** 
038     * {@inheritDoc}
039     */
040    @Override
041    synchronized public void notifyVersion(SprogVersion v) {
042        log.debug("Version {} notified", v.toString());
043        JOptionPane.showMessageDialog(null, Bundle.getMessage("SprogVersionDialogString", v.toString()),
044                Bundle.getMessage("SprogVersionTitle"), JOptionPane.INFORMATION_MESSAGE);
045        setVisible(false);
046        dispose();
047    }
048
049    /**
050     * Removes SprogVersionListener.
051     * {@inheritDoc}
052     */
053    @Override
054    public void dispose() {
055        _memo.getSprogVersionQuery().removeSprogVersionListener(this);
056        super.dispose();
057    }
058
059    private final static Logger log = LoggerFactory.getLogger(SprogVersionFrame.class);
060}