//# 0 errors, 399 messages
//#
/*
    //#DurationDisplay.java:1:1: class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#DurationDisplay.java:1:1: method: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init
 * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.dmdirc.addons.ui_swing.components.durationeditor;

import com.dmdirc.ui.messages.Formatter;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.util.ListenerList;

import java.awt.Insets;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

/**
 * Duration display and edit component.
 */
public class DurationDisplay extends JPanel implements ActionListener,
        DurationListener {

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 1;
    /** Current duration. */
    private int duration;
    /** Duration label. */
    private JLabel durationLabel;
    /** Edit button. */
    private JButton button;
    /** Listener list. */
    private final ListenerList listeners;
    /** Parent window. */
    private Window window;

    /**
     * Initialises a new duration display of 0 milliseconds.
     */
    public DurationDisplay() {
        this(0);
    //#DurationDisplay.java:67: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JLabel(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new ListenerList(DurationDisplay#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.button
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.duration
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.durationLabel
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.listeners
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.window
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JLabel(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.button == &new JButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): init'ed(this.duration)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.durationLabel == &new JLabel(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.listeners == &new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): this.window == null
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new JLabel(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): new ListenerList(DurationDisplay#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:isWindowsUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.lang.Long:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()): Effects-of-calling:java.lang.String:equals
    }
    //#DurationDisplay.java:68: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay()
    
    /**
     * Instantiates a new duration display.
     * 
     * @param window Parent window.
     * 
     * @since 0.6
     */
    public DurationDisplay(final Window window) {
        this(window, 0);
    //#DurationDisplay.java:78: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): window
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JLabel(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new ListenerList(DurationDisplay#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.button
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.duration
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.durationLabel
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.listeners
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.window
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JLabel(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.button == &new JButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): init'ed(this.duration)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.durationLabel == &new JLabel(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.listeners == &new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): this.window == window
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): init'ed(this.window)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new JLabel(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): new ListenerList(DurationDisplay#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.lang.Long:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)): Effects-of-calling:java.lang.String:equals
    }
    //#DurationDisplay.java:79: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window)
    
    /**
     * Instantiates a new duration display.
     * 
     * @param duration Starting duration
     */
    public DurationDisplay(final long duration) {
        this(null, duration);
    //#DurationDisplay.java:87: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): duration
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JLabel(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new ListenerList(DurationDisplay#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.button
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.duration
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.durationLabel
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.listeners
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.window
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JLabel(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.button == &new JButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): init'ed(this.duration)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.durationLabel == &new JLabel(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.listeners == &new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): this.window == null
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new JLabel(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): new ListenerList(DurationDisplay#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.lang.Long:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)): Effects-of-calling:java.lang.String:equals
    }
    //#DurationDisplay.java:88: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(long)

    /**
     * Initialises a new duration display showing the specified millisecond duration.
     * 
     * @param window Parent window.
     * @param duration Duration to display in milliseconds
     * 
     * @since 0.6
     */
    public DurationDisplay(final Window window, final long duration) {
    //#DurationDisplay.java:98: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): duration
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this
    //#input(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): window
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JLabel(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new ListenerList(DurationDisplay#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.button
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.duration
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.durationLabel
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.listeners
    //#output(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.window
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JLabel(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new ListenerList(DurationDisplay#1)
    //#presumption(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): java.lang.Long:valueOf(...)@100 != null
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.button == &new JButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): init'ed(this.duration)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.durationLabel == &new JLabel(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.listeners == &new ListenerList(DurationDisplay#1)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): this.window == window
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): init'ed(this.window)
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new JLabel(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): new ListenerList(DurationDisplay#1) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:isWindowsUI
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:java.awt.Insets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.JButton:setMargin
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)): Effects-of-calling:java.lang.String:equals
        this.window = window;
        this.duration = Long.valueOf(duration / 1000).intValue();
        listeners = new ListenerList();
    //#DurationDisplay.java:101: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList()

        initComponents();
        addListeners();
        layoutComponents();
    }
    //#DurationDisplay.java:106: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay(Window, long)

    /**
     * Initliases and lays out the components.
     */
    private void initComponents() {
        button = new JButton("Edit");
    //#DurationDisplay.java:112: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.initComponents()
    //#input(void initComponents()): this
    //#input(void initComponents()): this.duration
    //#output(void initComponents()): new JButton(initComponents#1) num objects
    //#output(void initComponents()): new JLabel(initComponents#2) num objects
    //#output(void initComponents()): this.button
    //#output(void initComponents()): this.durationLabel
    //#new obj(void initComponents()): new JButton(initComponents#1)
    //#new obj(void initComponents()): new JLabel(initComponents#2)
    //#pre[2] (void initComponents()): init'ed(this.duration)
    //#post(void initComponents()): this.button == &new JButton(initComponents#1)
    //#post(void initComponents()): this.durationLabel == &new JLabel(initComponents#2)
    //#post(void initComponents()): new JButton(initComponents#1) num objects == 1
    //#post(void initComponents()): new JLabel(initComponents#2) num objects == 1
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.UIManager:getLookAndFeel
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.String:equals
    //#test_vector(void initComponents()): this.duration: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
        durationLabel = new JLabel();
        if (duration == 0) {
            durationLabel.setText("0 Seconds");
        } else {
            durationLabel.setText(Formatter.formatDuration(duration));
    //#DurationDisplay.java:117: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.ui.messages.Formatter:formatDuration(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void initComponents()
    //#    unanalyzed callee: String com.dmdirc.ui.messages.Formatter:formatDuration(int)
        }

        if (UIUtilities.isWindowsUI()) {
            button.setMargin(new Insets(2, 4, 2, 4));
        } else {
            button.setMargin(new Insets(0, 2, 0, 2));
        }
    }
    //#DurationDisplay.java:125: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.initComponents()

    /**
     * Adds listeners to the components.
     */
    private void addListeners() {
        button.addActionListener(this);
    //#DurationDisplay.java:131: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.addListeners()
    //#input(void addListeners()): this
    //#input(void addListeners()): this.button
    //#pre[2] (void addListeners()): this.button != null
    }
    //#DurationDisplay.java:132: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.addListeners()

    /**
     * Lays out the components.
     */
    private void layoutComponents() {
        setLayout(new MigLayout("ins 0, fill"));
    //#DurationDisplay.java:138: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.layoutComponents()
    //#DurationDisplay.java:138: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#DurationDisplay.java:138: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:setLayout(LayoutManager)
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.button
    //#input(void layoutComponents()): this.durationLabel
    //#pre[2] (void layoutComponents()): init'ed(this.button)
    //#pre[3] (void layoutComponents()): init'ed(this.durationLabel)

        add(durationLabel, "growx, pushx");
    //#DurationDisplay.java:140: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add(Component, Object)
        add(button, "");
    //#DurationDisplay.java:141: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay:add(Component, Object)
    }
    //#DurationDisplay.java:142: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.layoutComponents()

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        DurationEditor editor = new DurationEditor(window, duration);
    //#DurationDisplay.java:151: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/nickcolours/NickColourInputDialog.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/nickcolours/NickColourInputDialog.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/ColourPickerDialog.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/ColourPickerDialog.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/MenuBar$1.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/MenuBar$1.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/nickcolours/NickColourInputDialog]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/ui_swing/components/ColourPickerDialog]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/ui_swing/components/MenuBar$1]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/ui_swing/components/StandardDialog]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/ui_swing/components/StandardInputDialog]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardDialog.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardInputDialog.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/StandardInputDialog.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Dispatch_Table.addDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Dispatch_Table.setCancelButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Dispatch_Table.setOkButton(Ljavax/swing/JButton;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.__Dispatch_Table.setWindow(Ljava/awt/Window;)V
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.java.awt.Dialog$ModalityType.MODELESS
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.duration
    //#input(void actionPerformed(ActionEvent)): this.window
    //#pre[2] (void actionPerformed(ActionEvent)): init'ed(this.duration)
    //#pre[3] (void actionPerformed(ActionEvent)): init'ed(this.window)
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:orderButtons
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.SpinnerNumberModel
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JSpinner
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Integer:valueOf
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JSpinner:setValue
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.event.WindowAdapter
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Window:addWindowListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setLayout
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:add
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getLeftButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getRightButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setDefaultCloseOperation
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:pack
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setResizable
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getOkButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:getCancelButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.ListenerList
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.util.ListenerList:add
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setDefaultCapable
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.System:getProperty
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setPreferredSize
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:setMinimumSize
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog:setIconImages
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JDialog
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Window:getIconImages
        editor.setLocationRelativeTo(this);
    //#DurationDisplay.java:152: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setLocationRelativeTo(Component)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationEditor:setLocationRelativeTo(Component)
        editor.addDurationListener(this);
    }
    //#DurationDisplay.java:154: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.actionPerformed(ActionEvent)

    /** 
     * {@inheritDoc}
     */
    @Override
    public void durationUpdated(final int newDuration) {
        duration = newDuration;
    //#DurationDisplay.java:161: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.durationUpdated(int)
    //#input(void durationUpdated(int)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(void durationUpdated(int)): __Descendant_Table[others]
    //#input(void durationUpdated(int)): __Dispatch_Table.durationUpdated(I)V
    //#input(void durationUpdated(int)): __Dispatch_Table.fireDurationListener(I)V
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/PrefsComponentFactory$5.__Dispatch_Table.durationUpdated(I)V
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5]
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener]
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[others]
    //#input(void durationUpdated(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Dispatch_Table.durationUpdated(I)V
    //#input(void durationUpdated(int)): newDuration
    //#input(void durationUpdated(int)): this
    //#input(void durationUpdated(int)): this.__Tag
    //#input(void durationUpdated(int)): this.durationLabel
    //#input(void durationUpdated(int)): this.listeners
    //#output(void durationUpdated(int)): this.duration
    //#pre[1] (void durationUpdated(int)): newDuration in {-2_147_483..4_294_967}
    //#pre[3] (void durationUpdated(int)): this.__Tag == com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay
    //#pre[4] (void durationUpdated(int)): this.durationLabel != null
    //#pre[5] (void durationUpdated(int)): this.listeners != null
    //#post(void durationUpdated(int)): this.duration == newDuration
    //#post(void durationUpdated(int)): this.duration in {-2_147_483..4_294_967}
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:fireDurationListener
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:setValue
    //#unanalyzed(void durationUpdated(int)): Effects-of-calling:durationUpdated
    //#test_vector(void durationUpdated(int)): newDuration: {-2_147_483..-1, 1..4_294_967}, {0}
        if (duration == 0) {
            durationLabel.setText("0 Seconds");
        } else {
            durationLabel.setText(Formatter.formatDuration(duration));
    //#DurationDisplay.java:165: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.ui.messages.Formatter:formatDuration(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void durationUpdated(int)
    //#    unanalyzed callee: String com.dmdirc.ui.messages.Formatter:formatDuration(int)
        }
        fireDurationListener(newDuration * 1000);
    }
    //#DurationDisplay.java:168: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.durationUpdated(int)

    /**
     * Returns the duration of this display in milliseconds.
     * 
     * @return Displayed duration in milliseconds
     */
    public long getDuration() {
        return duration * 1000;
    //#DurationDisplay.java:176: method: long com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.getDuration()
    //#input(long getDuration()): this
    //#input(long getDuration()): this.duration
    //#output(long getDuration()): return_value
    //#pre[2] (long getDuration()): init'ed(this.duration)
    //#post(long getDuration()): return_value == this.duration*1_000
    //#post(long getDuration()): return_value in {-2_147_483_648_000..4_294_967_295_000}
    //#DurationDisplay.java:176: end of method: long com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.getDuration()
    }

    /**
     * Adds a DurationListener to the listener list.
     *
     * @param listener Listener to add
     */
    public void addDurationListener(final DurationListener listener) {
        synchronized (listeners) {
    //#DurationDisplay.java:185: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.addDurationListener(DurationListener)
    //#input(void addDurationListener(DurationListener)): listener
    //#input(void addDurationListener(DurationListener)): this
    //#input(void addDurationListener(DurationListener)): this.listeners
    //#input(void addDurationListener(DurationListener)): this.listeners.__Lock
    //#pre[3] (void addDurationListener(DurationListener)): (soft) this.listeners != null
    //#test_vector(void addDurationListener(DurationListener)): listener: Inverse{null}, Addr_Set{null}
            if (listener == null) {
                return;
            }
            listeners.add(DurationListener.class, listener);
    //#DurationDisplay.java:189: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:add(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void addDurationListener(DurationListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:add(Class, Object)
        }
    }
    //#DurationDisplay.java:191: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.addDurationListener(DurationListener)

    /**
     * Removes a DurationListener from the listener list.
     *
     * @param listener Listener to remove
     */
    public void removeDurationListener(final DurationListener listener) {
        listeners.remove(DurationListener.class, listener);
    //#DurationDisplay.java:199: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.removeDurationListener(DurationListener)
    //#DurationDisplay.java:199: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void removeDurationListener(DurationListener)
    //#    unanalyzed callee: void com.dmdirc.util.ListenerList:remove(Class, Object)
    //#input(void removeDurationListener(DurationListener)): listener
    //#input(void removeDurationListener(DurationListener)): this
    //#input(void removeDurationListener(DurationListener)): this.listeners
    //#pre[3] (void removeDurationListener(DurationListener)): this.listeners != null
    }
    //#DurationDisplay.java:200: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.removeDurationListener(DurationListener)

    /**
     * Fires the duration updated method on all listeners.
     * 
     * @param newDuration New duration
     */
    protected void fireDurationListener(final int newDuration) {
        for (DurationListener listener : listeners.get(DurationListener.class)) {
    //#DurationDisplay.java:208: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.fireDurationListener(int)
    //#DurationDisplay.java:208: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.util.ListenerList:get(Class)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
    //#    method: void fireDurationListener(int)
    //#    unanalyzed callee: List com.dmdirc.util.ListenerList:get(Class)
    //#input(void fireDurationListener(int)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(void fireDurationListener(int)): __Descendant_Table[others]
    //#input(void fireDurationListener(int)): __Dispatch_Table.durationUpdated(I)V
    //#input(void fireDurationListener(int)): __Dispatch_Table.fireDurationListener(I)V
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/PrefsComponentFactory$5.__Dispatch_Table.durationUpdated(I)V
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/PrefsComponentFactory$5]
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener]
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[others]
    //#input(void fireDurationListener(int)): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Dispatch_Table.durationUpdated(I)V
    //#input(void fireDurationListener(int)): newDuration
    //#input(void fireDurationListener(int)): this
    //#input(void fireDurationListener(int)): this.listeners
    //#pre[3] (void fireDurationListener(int)): this.listeners != null
    //#presumption(void fireDurationListener(int)): com.dmdirc.util.ListenerList:get(...)@208 != null
    //#presumption(void fireDurationListener(int)): java.util.Iterator:next(...).__Tag@208 in {com/dmdirc/addons/ui_swing/PrefsComponentFactory$5, com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay, com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener}
    //#presumption(void fireDurationListener(int)): java.util.Iterator:next(...)@208 != null
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:fireDurationListener
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:com.dmdirc.util.ListenerList:get
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:com.dmdirc.config.prefs.PreferencesSetting:setValue
    //#unanalyzed(void fireDurationListener(int)): Effects-of-calling:durationUpdated
    //#test_vector(void fireDurationListener(int)): java.util.Iterator:hasNext(...)@208: {0}, {1}
            listener.durationUpdated(newDuration);
        }
    }
    //#DurationDisplay.java:211: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.fireDurationListener(int)
    
    /**
     * Sets the Parent window.
     * 
     * @param window Parent window
     */
    public void setWindow(final Window window) {
        this.window = window;
    //#DurationDisplay.java:219: method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.setWindow(Window)
    //#input(void setWindow(Window)): this
    //#input(void setWindow(Window)): window
    //#output(void setWindow(Window)): this.window
    //#post(void setWindow(Window)): this.window == window
    //#post(void setWindow(Window)): init'ed(this.window)
    }
    //#DurationDisplay.java:220: end of method: void com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.setWindow(Window)
}
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.addDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.durationUpdated(I)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.fireDurationListener(I)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.getDuration()J
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.removeDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.setWindow(Ljava/awt/Window;)V
    //#output(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay]
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): com/dmdirc/addons/ui_swing/components/durationeditor/DurationListener.__Descendant_Table[com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.addDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V == &addDurationListener
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.durationUpdated(I)V == &durationUpdated
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.fireDurationListener(I)V == &fireDurationListener
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.getDuration()J == &getDuration
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.removeDurationListener(Lcom/dmdirc/addons/ui_swing/components/durationeditor/DurationListener;)V == &removeDurationListener
    //#post(com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init): __Dispatch_Table.setWindow(Ljava/awt/Window;)V == &setWindow
    //#DurationDisplay.java:: end of method: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay.com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay__static_init
    //#DurationDisplay.java:: end of class: com.dmdirc.addons.ui_swing.components.durationeditor.DurationDisplay
