//# 0 errors, 544 messages
//#
/*
    //#URLProtocolPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#URLProtocolPanel.java:1:1: method: com.dmdirc.addons.ui_swing.components.URLProtocolPanel.com.dmdirc.addons.ui_swing.components.URLProtocolPanel__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;

import com.dmdirc.config.IdentityManager;
import com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel;
import com.dmdirc.util.URLHandler;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URI;
import java.util.Arrays;
import java.util.Enumeration;

import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import net.miginfocom.swing.MigLayout;

/**
 * URL Protocol configuration panel.
 */
public class URLProtocolPanel extends JPanel implements ActionListener,
        DocumentListener {

    /**
     * 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;
    /** Show file chooser. */
    private JButton showFileChooser;
    /** Command text field. */
    private JTextField commandPath;
    /** Option selection. */
    private ButtonGroup optionType;
    /** DMDirc choice. */
    private JRadioButton dmdirc;
    /** Browser choice. */
    private JRadioButton browser;
    /** Mail choice. */
    private JRadioButton mail;
    /** Custom command choice. */
    private JRadioButton custom;
    /** Substitutions label. */
    private JLabel subsLabel;
    /** example label. */
    private JLabel exampleLabel;
    /** URL. */
    private final URI uri;
    /** Show insets? */
    private final boolean useInsets;
    /** Substitutions panel. */
    private URLSubsitutionsPanel subsPanel;

    /**
     * Instantiates the URLDialog.
     *
     * @param url URL to open once added
     * @param useInsets Show insets?
     */
    public URLProtocolPanel(final URI url, final boolean useInsets) {
        super();
    //#URLProtocolPanel.java:92: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): ""._tainted
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): "-2*u"._tainted
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): "Example: "._tainted
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): "width ::100%"._tainted
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): __Descendant_Table[others]
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): __Dispatch_Table.setEnabled(Z)V
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): __Dispatch_Table.updateSelection()V
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.__Tag
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): url
    //#input(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): useInsets
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new ButtonGroup(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JButton(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#8) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#9) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#7) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JTextField(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new URLSubsitutionsPanel(initComponents#10) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.__Tag
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.browser
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.commandPath
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.custom
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.dmdirc
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.exampleLabel
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.mail
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.optionType
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.showFileChooser
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.subsLabel
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.subsPanel
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.uri
    //#output(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.useInsets
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new ButtonGroup(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JButton(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#8)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#9)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#7)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JTextField(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new URLSubsitutionsPanel(initComponents#10)
    //#pre[1] (void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.browser == &new JRadioButton(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.commandPath == &new JTextField(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.custom == &new JRadioButton(initComponents#7)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.dmdirc == &new JRadioButton(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.exampleLabel == &new JLabel(initComponents#9)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.mail == &new JRadioButton(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.optionType == &new ButtonGroup(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.showFileChooser == &new JButton(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.subsLabel == &new JLabel(initComponents#8)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.subsPanel == &new URLSubsitutionsPanel(initComponents#10)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.uri == url
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): init'ed(this.uri)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): this.useInsets == useInsets
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): init'ed(this.useInsets)
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new ButtonGroup(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JButton(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#8) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JLabel(initComponents#9) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JRadioButton(initComponents#7) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new JTextField(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): new URLSubsitutionsPanel(initComponents#10) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.awt.event.ActionEvent:getSource
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JFileChooser
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.filechooser.FileFilter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JFileChooser:addChoosableFileFilter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JFileChooser:setFileSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JFileChooser:showDialog
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JFileChooser:getSelectedFile
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.io.File:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JRadioButton:isSelected
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JLabel:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.URLProtocolPanel:validate
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.URLProtocolPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JRadioButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JTextField:getDocument
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.text.Document:addDocumentListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.net.URI:getScheme
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.config.ConfigManager:hasOptionString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup:setSelected
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup:clearSelection
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:updateExample
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.util.URLHandler:getURLHander
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.util.URLHandler:substituteParams
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JRadioButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:javax.swing.ButtonGroup:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel

        this.uri = url;
        this.useInsets = useInsets;

        initComponents();
        layoutComponents();
        addListeners();
    }
    //#URLProtocolPanel.java:100: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.com.dmdirc.addons.ui_swing.components.URLProtocolPanel(URI, bool)

    /** Initialises the components. */
    private void initComponents() {
        showFileChooser = new JButton("Browse");
    //#URLProtocolPanel.java:104: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.initComponents()
    //#input(void initComponents()): "Example: "._tainted
    //#input(void initComponents()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void initComponents()): __Descendant_Table[others]
    //#input(void initComponents()): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#input(void initComponents()): __Dispatch_Table.setEnabled(Z)V
    //#input(void initComponents()): __Dispatch_Table.updateSelection()V
    //#input(void initComponents()): this
    //#input(void initComponents()): this.__Tag
    //#input(void initComponents()): this.uri
    //#output(void initComponents()): new ButtonGroup(initComponents#3) num objects
    //#output(void initComponents()): new JButton(initComponents#1) num objects
    //#output(void initComponents()): new JLabel(initComponents#8) num objects
    //#output(void initComponents()): new JLabel(initComponents#9) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#4) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#5) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#6) num objects
    //#output(void initComponents()): new JRadioButton(initComponents#7) num objects
    //#output(void initComponents()): new JTextField(initComponents#2) num objects
    //#output(void initComponents()): new URLSubsitutionsPanel(initComponents#10) num objects
    //#output(void initComponents()): this.browser
    //#output(void initComponents()): this.commandPath
    //#output(void initComponents()): this.custom
    //#output(void initComponents()): this.dmdirc
    //#output(void initComponents()): this.exampleLabel
    //#output(void initComponents()): this.mail
    //#output(void initComponents()): this.optionType
    //#output(void initComponents()): this.showFileChooser
    //#output(void initComponents()): this.subsLabel
    //#output(void initComponents()): this.subsPanel
    //#new obj(void initComponents()): new ButtonGroup(initComponents#3)
    //#new obj(void initComponents()): new JButton(initComponents#1)
    //#new obj(void initComponents()): new JLabel(initComponents#8)
    //#new obj(void initComponents()): new JLabel(initComponents#9)
    //#new obj(void initComponents()): new JRadioButton(initComponents#4)
    //#new obj(void initComponents()): new JRadioButton(initComponents#5)
    //#new obj(void initComponents()): new JRadioButton(initComponents#6)
    //#new obj(void initComponents()): new JRadioButton(initComponents#7)
    //#new obj(void initComponents()): new JTextField(initComponents#2)
    //#new obj(void initComponents()): new URLSubsitutionsPanel(initComponents#10)
    //#pre[2] (void initComponents()): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#post(void initComponents()): this.browser == &new JRadioButton(initComponents#5)
    //#post(void initComponents()): this.commandPath == &new JTextField(initComponents#2)
    //#post(void initComponents()): this.custom == &new JRadioButton(initComponents#7)
    //#post(void initComponents()): this.dmdirc == &new JRadioButton(initComponents#4)
    //#post(void initComponents()): this.exampleLabel == &new JLabel(initComponents#9)
    //#post(void initComponents()): this.mail == &new JRadioButton(initComponents#6)
    //#post(void initComponents()): this.optionType == &new ButtonGroup(initComponents#3)
    //#post(void initComponents()): this.showFileChooser == &new JButton(initComponents#1)
    //#post(void initComponents()): this.subsLabel == &new JLabel(initComponents#8)
    //#post(void initComponents()): this.subsPanel == &new URLSubsitutionsPanel(initComponents#10)
    //#post(void initComponents()): new ButtonGroup(initComponents#3) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#1) num objects == 1
    //#post(void initComponents()): new JLabel(initComponents#8) num objects == 1
    //#post(void initComponents()): new JLabel(initComponents#9) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#4) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#5) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#6) num objects == 1
    //#post(void initComponents()): new JRadioButton(initComponents#7) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#2) num objects == 1
    //#post(void initComponents()): new URLSubsitutionsPanel(initComponents#10) num objects == 1
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.event.ActionEvent:getSource
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JFileChooser
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.filechooser.FileFilter
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JFileChooser:addChoosableFileFilter
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JFileChooser:setFileSelectionMode
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JFileChooser:showDialog
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JFileChooser:getSelectedFile
    //#unanalyzed(void initComponents()): Effects-of-calling:java.io.File:toString
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JRadioButton:isSelected
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.URLProtocolPanel:validate
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initComponents()): Effects-of-calling:java.net.URI:getScheme
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:hasOptionString
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOption
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ButtonGroup:setSelected
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.ButtonGroup:clearSelection
    //#unanalyzed(void initComponents()): Effects-of-calling:updateExample
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.URLHandler:getURLHander
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.util.URLHandler:substituteParams
        commandPath = new JTextField();
        optionType = new ButtonGroup();
        dmdirc = new JRadioButton("Handle internally (irc links only)");
        browser = new JRadioButton("Use browser (or system registered handler)");
        mail = new JRadioButton("Use mail client");
        custom = new JRadioButton("Custom command");
        subsLabel = new JLabel();
        exampleLabel = new JLabel();

        commandPath.setEnabled(false);
        showFileChooser.setEnabled(false);
        subsLabel.setEnabled(false);
        exampleLabel.setEnabled(false);

        optionType.add(dmdirc);
        optionType.add(browser);
        optionType.add(mail);
        optionType.add(custom);

        subsPanel = new URLSubsitutionsPanel(Arrays.asList(new String[]{"url",
    //#URLProtocolPanel.java:124: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel(List)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel(List)
            "fragment", "host", "path", "port", "query", "protocol", "username",
            "password"
        }));
        subsPanel.setVisible(custom.isSelected());
    //#URLProtocolPanel.java:128: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible(bool)
        
        updateSelection();
    }
    //#URLProtocolPanel.java:131: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.initComponents()

    /** Lays out the components. */
    private void layoutComponents() {
        if (useInsets) {
    //#URLProtocolPanel.java:135: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.layoutComponents()
    //#input(void layoutComponents()): ""._tainted
    //#input(void layoutComponents()): "-2*u"._tainted
    //#input(void layoutComponents()): "width ::100%"._tainted
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.browser
    //#input(void layoutComponents()): this.commandPath
    //#input(void layoutComponents()): this.custom
    //#input(void layoutComponents()): this.dmdirc
    //#input(void layoutComponents()): this.exampleLabel
    //#input(void layoutComponents()): this.mail
    //#input(void layoutComponents()): this.showFileChooser
    //#input(void layoutComponents()): this.subsLabel
    //#input(void layoutComponents()): this.subsPanel
    //#input(void layoutComponents()): this.useInsets
    //#pre[2] (void layoutComponents()): init'ed(this.browser)
    //#pre[3] (void layoutComponents()): init'ed(this.commandPath)
    //#pre[4] (void layoutComponents()): init'ed(this.custom)
    //#pre[5] (void layoutComponents()): init'ed(this.dmdirc)
    //#pre[6] (void layoutComponents()): init'ed(this.exampleLabel)
    //#pre[7] (void layoutComponents()): init'ed(this.mail)
    //#pre[8] (void layoutComponents()): init'ed(this.showFileChooser)
    //#pre[9] (void layoutComponents()): init'ed(this.subsLabel)
    //#pre[10] (void layoutComponents()): init'ed(this.subsPanel)
    //#test_vector(void layoutComponents()): this.useInsets: {0}, {1}
            setLayout(new MigLayout("fillx, wrap 1, hidemode 3"));
    //#URLProtocolPanel.java:136: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#URLProtocolPanel.java:136: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:setLayout(LayoutManager)
        } else {
            setLayout(new MigLayout("ins 0, fillx, wrap 1, hidemode 3"));
    //#URLProtocolPanel.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.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#URLProtocolPanel.java:138: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:setLayout(LayoutManager)
        }

        add(dmdirc, "growx, pushx");
    //#URLProtocolPanel.java:141: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(browser, "growx, pushx");
    //#URLProtocolPanel.java:142: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(mail, "growx, pushx");
    //#URLProtocolPanel.java:143: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(custom, "growx, pushx");
    //#URLProtocolPanel.java:144: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(commandPath, "split 2, growx, pushx, sgy line");
    //#URLProtocolPanel.java:145: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(showFileChooser, "sgy line");
    //#URLProtocolPanel.java:146: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(subsLabel, "growx, pushx");
    //#URLProtocolPanel.java:147: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(exampleLabel, "width ::100%" + (useInsets ? "-2*u" : ""));
    //#URLProtocolPanel.java:148: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
        add(subsPanel, "growx, pushx");
    //#URLProtocolPanel.java:149: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:add(Component, Object)
    }
    //#URLProtocolPanel.java:150: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.layoutComponents()

    /** Adds listeners to the components. */
    private void addListeners() {
        showFileChooser.addActionListener(this);
    //#URLProtocolPanel.java:154: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.addListeners()
    //#input(void addListeners()): this
    //#input(void addListeners()): this.browser
    //#input(void addListeners()): this.commandPath
    //#input(void addListeners()): this.custom
    //#input(void addListeners()): this.dmdirc
    //#input(void addListeners()): this.mail
    //#input(void addListeners()): this.showFileChooser
    //#pre[2] (void addListeners()): this.browser != null
    //#pre[3] (void addListeners()): this.commandPath != null
    //#pre[4] (void addListeners()): this.custom != null
    //#pre[5] (void addListeners()): this.dmdirc != null
    //#pre[6] (void addListeners()): this.mail != null
    //#pre[7] (void addListeners()): this.showFileChooser != null
    //#presumption(void addListeners()): javax.swing.JTextField:getDocument(...)@159 != null
        dmdirc.addActionListener(this);
        browser.addActionListener(this);
        mail.addActionListener(this);
        custom.addActionListener(this);
        commandPath.getDocument().addDocumentListener(this);
    }
    //#URLProtocolPanel.java:160: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.addListeners()

    /** Saves the settings. */
    public void save() {
        IdentityManager.getConfigIdentity().setOption("protocol",
    //#URLProtocolPanel.java:164: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.save()
    //#URLProtocolPanel.java:164: Warning: method not available - call not analyzed
    //#    call on Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void save()
    //#    unanalyzed callee: Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#URLProtocolPanel.java:164: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, String)
    //#input(void save()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void save()): __Descendant_Table[others]
    //#input(void save()): __Dispatch_Table.getSelection()Ljava/lang/String;
    //#input(void save()): this
    //#input(void save()): this.__Tag
    //#input(void save()): this.browser
    //#input(void save()): this.commandPath
    //#input(void save()): this.custom
    //#input(void save()): this.dmdirc
    //#input(void save()): this.mail
    //#input(void save()): this.optionType
    //#input(void save()): this.uri
    //#pre[2] (void save()): this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#pre[6] (void save()): this.dmdirc != null
    //#pre[8] (void save()): this.optionType != null
    //#pre[9] (void save()): this.uri != null
    //#pre[3] (void save()): (soft) this.browser != null
    //#pre[4] (void save()): (soft) this.commandPath != null
    //#pre[5] (void save()): (soft) this.custom != null
    //#pre[7] (void save()): (soft) this.mail != null
    //#presumption(void save()): com.dmdirc.config.IdentityManager:getConfigIdentity(...)@164 != null
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void save()): Effects-of-calling:javax.swing.JTextField:getText
                uri.getScheme(), getSelection());
    }
    //#URLProtocolPanel.java:166: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.save()

    /**
     * Returns the selected value.
     *
     * @return Selected value
     */
    public String getSelection() {
        final String value;
        if (optionType.getSelection() == dmdirc.getModel()) {
    //#URLProtocolPanel.java:175: method: String com.dmdirc.addons.ui_swing.components.URLProtocolPanel.getSelection()
    //#input(String getSelection()): this
    //#input(String getSelection()): this.browser
    //#input(String getSelection()): this.commandPath
    //#input(String getSelection()): this.custom
    //#input(String getSelection()): this.dmdirc
    //#input(String getSelection()): this.mail
    //#input(String getSelection()): this.optionType
    //#output(String getSelection()): return_value
    //#pre[5] (String getSelection()): this.dmdirc != null
    //#pre[7] (String getSelection()): this.optionType != null
    //#pre[2] (String getSelection()): (soft) this.browser != null
    //#pre[3] (String getSelection()): (soft) this.commandPath != null
    //#pre[4] (String getSelection()): (soft) this.custom != null
    //#pre[6] (String getSelection()): (soft) this.mail != null
    //#post(String getSelection()): init'ed(return_value)
            value = "DMDIRC";
        } else if (optionType.getSelection() == browser.getModel()) {
            value = "BROWSER";
        } else if (optionType.getSelection() == mail.getModel()) {
            value = "MAIL";
        } else if (optionType.getSelection() == custom.getModel()) {
            value = commandPath.getText();
        } else {
            value = "";
        }

        return value;
    //#URLProtocolPanel.java:187: end of method: String com.dmdirc.addons.ui_swing.components.URLProtocolPanel.getSelection()
    }

    /**
     * Updates the example label.
     */
    private void updateExample() {
        if (uri == null) {
    //#URLProtocolPanel.java:194: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.updateExample()
    //#input(void updateExample()): "Example: "._tainted
    //#input(void updateExample()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void updateExample()): __Descendant_Table[others]
    //#input(void updateExample()): __Dispatch_Table.setEnabled(Z)V
    //#input(void updateExample()): this
    //#input(void updateExample()): this.__Tag
    //#input(void updateExample()): this.commandPath
    //#input(void updateExample()): this.exampleLabel
    //#input(void updateExample()): this.optionType
    //#input(void updateExample()): this.uri
    //#pre[4] (void updateExample()): this.exampleLabel != null
    //#pre[2] (void updateExample()): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#pre[3] (void updateExample()): (soft) this.commandPath != null
    //#pre[5] (void updateExample()): (soft) this.optionType != null
    //#presumption(void updateExample()): com.dmdirc.util.URLHandler:getURLHander(...)@198 != null
    //#unanalyzed(void updateExample()): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void updateExample()): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void updateExample()): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void updateExample()): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void updateExample()): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#test_vector(void updateExample()): this.uri: Inverse{null}, Addr_Set{null}
            setEnabled(false);
            exampleLabel.setText("Example: ");
        } else {
            exampleLabel.setText("Example: " + URLHandler.getURLHander().
    //#URLProtocolPanel.java:198: Warning: method not available - call not analyzed
    //#    call on URLHandler com.dmdirc.util.URLHandler:getURLHander()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateExample()
    //#    unanalyzed callee: URLHandler com.dmdirc.util.URLHandler:getURLHander()
    //#URLProtocolPanel.java:198: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.util.URLHandler:substituteParams(URI, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateExample()
    //#    unanalyzed callee: String com.dmdirc.util.URLHandler:substituteParams(URI, String)
                    substituteParams(uri, commandPath.getText()));
        }
    }
    //#URLProtocolPanel.java:201: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.updateExample()

    /**
     * Updates the selection.
     */
    public void updateSelection() {
        if (uri != null && IdentityManager.getGlobalConfig().hasOptionString(
    //#URLProtocolPanel.java:207: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.updateSelection()
    //#URLProtocolPanel.java:207: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateSelection()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#URLProtocolPanel.java:207: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateSelection()
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:hasOptionString(String, String)
    //#input(void updateSelection()): "Example: "._tainted
    //#input(void updateSelection()): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void updateSelection()): __Descendant_Table[others]
    //#input(void updateSelection()): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#input(void updateSelection()): __Dispatch_Table.setEnabled(Z)V
    //#input(void updateSelection()): this
    //#input(void updateSelection()): this.__Tag
    //#input(void updateSelection()): this.browser
    //#input(void updateSelection()): this.commandPath
    //#input(void updateSelection()): this.custom
    //#input(void updateSelection()): this.dmdirc
    //#input(void updateSelection()): this.exampleLabel
    //#input(void updateSelection()): this.mail
    //#input(void updateSelection()): this.optionType
    //#input(void updateSelection()): this.showFileChooser
    //#input(void updateSelection()): this.subsLabel
    //#input(void updateSelection()): this.subsPanel
    //#input(void updateSelection()): this.uri
    //#pre[9] (void updateSelection()): this.optionType != null
    //#pre[2] (void updateSelection()): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#pre[3] (void updateSelection()): (soft) this.browser != null
    //#pre[4] (void updateSelection()): (soft) this.commandPath != null
    //#pre[5] (void updateSelection()): (soft) this.custom != null
    //#pre[6] (void updateSelection()): (soft) this.dmdirc != null
    //#pre[7] (void updateSelection()): (soft) this.exampleLabel != null
    //#pre[8] (void updateSelection()): (soft) this.mail != null
    //#pre[10] (void updateSelection()): (soft) this.showFileChooser != null
    //#pre[11] (void updateSelection()): (soft) this.subsLabel != null
    //#pre[12] (void updateSelection()): (soft) this.subsPanel != null
    //#presumption(void updateSelection()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@207 != null
    //#presumption(void updateSelection()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@209 != null
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.awt.event.ActionEvent:getSource
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JFileChooser
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.filechooser.FileFilter
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JFileChooser:addChoosableFileFilter
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JFileChooser:setFileSelectionMode
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JFileChooser:showDialog
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JFileChooser:getSelectedFile
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.io.File:toString
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JTextField:setText
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JRadioButton:isSelected
    //#unanalyzed(void updateSelection()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.ButtonGroup:getSelection
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JRadioButton:getModel
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JTextField:setEnabled
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JLabel:setEnabled
    //#unanalyzed(void updateSelection()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.URLProtocolPanel:validate
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void updateSelection()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void updateSelection()): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void updateSelection()): Effects-of-calling:com.dmdirc.util.URLHandler:getURLHander
    //#unanalyzed(void updateSelection()): Effects-of-calling:com.dmdirc.util.URLHandler:substituteParams
    //#test_vector(void updateSelection()): this.uri: Addr_Set{null}, Inverse{null}
    //#test_vector(void updateSelection()): com.dmdirc.config.ConfigManager:hasOptionString(...)@207: {0}, {1}
    //#test_vector(void updateSelection()): java.lang.String:equals(...)@213: {0}, {1}
    //#test_vector(void updateSelection()): java.lang.String:equals(...)@215: {0}, {1}
    //#test_vector(void updateSelection()): java.lang.String:equals(...)@217: {0}, {1}
                "protocol", uri.getScheme())) {
            final String option =
    //#URLProtocolPanel.java:209: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateSelection()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#URLProtocolPanel.java:209: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.config.ConfigManager:getOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void updateSelection()
    //#    unanalyzed callee: String com.dmdirc.config.ConfigManager:getOption(String, String)
                    IdentityManager.getGlobalConfig().getOption("protocol",
                    uri.getScheme());

            if ("DMDIRC".equals(option)) {
                optionType.setSelected(dmdirc.getModel(), true);
            } else if ("BROWSER".equals(option)) {
                optionType.setSelected(browser.getModel(), true);
            } else if ("MAIL".equals(option)) {
                optionType.setSelected(mail.getModel(), true);
            } else {
                optionType.setSelected(custom.getModel(), true);
                commandPath.setText(option);
                actionPerformed(null);
            }
        } else {
            optionType.clearSelection();
            commandPath.setText("");
        }

        updateExample();
    }
    //#URLProtocolPanel.java:230: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.updateSelection()

    /** {@inheritDoc} */
    @Override
    public void setEnabled(final boolean enabled) {
        super.setEnabled(enabled);
    //#URLProtocolPanel.java:235: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.setEnabled(bool)
    //#input(void setEnabled(bool)): enabled
    //#input(void setEnabled(bool)): this
    //#input(void setEnabled(bool)): this.optionType
    //#pre[3] (void setEnabled(bool)): this.optionType != null
    //#presumption(void setEnabled(bool)): java.util.Enumeration:nextElement(...)@238 != null
    //#presumption(void setEnabled(bool)): javax.swing.ButtonGroup:getElements(...)@236 != null
    //#test_vector(void setEnabled(bool)): java.util.Enumeration:hasMoreElements(...)@237: {0}, {1}
        final Enumeration<AbstractButton> buttons = optionType.getElements();
        while (buttons.hasMoreElements()) {
            buttons.nextElement().setEnabled(enabled);
        }
    }
    //#URLProtocolPanel.java:240: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.setEnabled(bool)

    /**
     * {@inheritDoc}
     *
     * @param e action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (e != null && e.getSource() == showFileChooser) {
    //#URLProtocolPanel.java:249: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.commandPath
    //#input(void actionPerformed(ActionEvent)): this.custom
    //#input(void actionPerformed(ActionEvent)): this.exampleLabel
    //#input(void actionPerformed(ActionEvent)): this.optionType
    //#input(void actionPerformed(ActionEvent)): this.showFileChooser
    //#input(void actionPerformed(ActionEvent)): this.subsLabel
    //#input(void actionPerformed(ActionEvent)): this.subsPanel
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) this.commandPath != null
    //#pre[4] (void actionPerformed(ActionEvent)): (soft) this.custom != null
    //#pre[5] (void actionPerformed(ActionEvent)): (soft) this.exampleLabel != null
    //#pre[6] (void actionPerformed(ActionEvent)): (soft) this.optionType != null
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.showFileChooser != null
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) this.subsLabel != null
    //#pre[9] (void actionPerformed(ActionEvent)): (soft) this.subsPanel != null
    //#presumption(void actionPerformed(ActionEvent)): javax.swing.JFileChooser:getSelectedFile(...)@255 != null
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.filechooser.FileFilter
    //#test_vector(void actionPerformed(ActionEvent)): e: Addr_Set{null}, Inverse{null}
    //#test_vector(void actionPerformed(ActionEvent)): javax.swing.JFileChooser:showDialog(...)@253: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
            final JFileChooser fileChooser = new JFileChooser();
            fileChooser.addChoosableFileFilter(new ExecutableFileFilter());
            fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            if (fileChooser.showDialog(this, "Select") ==
                    JFileChooser.APPROVE_OPTION) {
                commandPath.setText(fileChooser.getSelectedFile().toString());
            }
        } else {
            subsPanel.setVisible(custom.isSelected());
    //#URLProtocolPanel.java:258: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.url.URLSubsitutionsPanel:setVisible(bool)
            if (optionType.getSelection() == custom.getModel()) {
                commandPath.setEnabled(true);
                showFileChooser.setEnabled(true);
                subsLabel.setEnabled(true);
                exampleLabel.setEnabled(true);
            } else {
                commandPath.setEnabled(false);
                showFileChooser.setEnabled(false);
                subsLabel.setEnabled(false);
                exampleLabel.setEnabled(false);
            }
            validate();
    //#URLProtocolPanel.java:270: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:validate()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel:validate()
        }
    }
    //#URLProtocolPanel.java:272: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.actionPerformed(ActionEvent)

    /** {@inheritDoc} */
    @Override
    public void insertUpdate(final DocumentEvent e) {
        updateExample();
    //#URLProtocolPanel.java:277: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.insertUpdate(DocumentEvent)
    //#input(void insertUpdate(DocumentEvent)): "Example: "._tainted
    //#input(void insertUpdate(DocumentEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void insertUpdate(DocumentEvent)): __Descendant_Table[others]
    //#input(void insertUpdate(DocumentEvent)): __Dispatch_Table.setEnabled(Z)V
    //#input(void insertUpdate(DocumentEvent)): this
    //#input(void insertUpdate(DocumentEvent)): this.__Tag
    //#input(void insertUpdate(DocumentEvent)): this.commandPath
    //#input(void insertUpdate(DocumentEvent)): this.exampleLabel
    //#input(void insertUpdate(DocumentEvent)): this.optionType
    //#input(void insertUpdate(DocumentEvent)): this.uri
    //#pre[4] (void insertUpdate(DocumentEvent)): this.exampleLabel != null
    //#pre[2] (void insertUpdate(DocumentEvent)): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#pre[3] (void insertUpdate(DocumentEvent)): (soft) this.commandPath != null
    //#pre[5] (void insertUpdate(DocumentEvent)): (soft) this.optionType != null
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:com.dmdirc.util.URLHandler:getURLHander
    //#unanalyzed(void insertUpdate(DocumentEvent)): Effects-of-calling:com.dmdirc.util.URLHandler:substituteParams
    }
    //#URLProtocolPanel.java:278: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.insertUpdate(DocumentEvent)

    /** {@inheritDoc} */
    @Override
    public void removeUpdate(final DocumentEvent e) {
        updateExample();
    //#URLProtocolPanel.java:283: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.removeUpdate(DocumentEvent)
    //#input(void removeUpdate(DocumentEvent)): "Example: "._tainted
    //#input(void removeUpdate(DocumentEvent)): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#input(void removeUpdate(DocumentEvent)): __Descendant_Table[others]
    //#input(void removeUpdate(DocumentEvent)): __Dispatch_Table.setEnabled(Z)V
    //#input(void removeUpdate(DocumentEvent)): this
    //#input(void removeUpdate(DocumentEvent)): this.__Tag
    //#input(void removeUpdate(DocumentEvent)): this.commandPath
    //#input(void removeUpdate(DocumentEvent)): this.exampleLabel
    //#input(void removeUpdate(DocumentEvent)): this.optionType
    //#input(void removeUpdate(DocumentEvent)): this.uri
    //#pre[4] (void removeUpdate(DocumentEvent)): this.exampleLabel != null
    //#pre[2] (void removeUpdate(DocumentEvent)): (soft) this.__Tag == com/dmdirc/addons/ui_swing/components/URLProtocolPanel
    //#pre[3] (void removeUpdate(DocumentEvent)): (soft) this.commandPath != null
    //#pre[5] (void removeUpdate(DocumentEvent)): (soft) this.optionType != null
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JPanel:setEnabled
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.ButtonGroup:getElements
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:java.util.Enumeration:hasMoreElements
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:java.util.Enumeration:nextElement
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.AbstractButton:setEnabled
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JTextField:getText
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:javax.swing.JLabel:setText
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:com.dmdirc.util.URLHandler:getURLHander
    //#unanalyzed(void removeUpdate(DocumentEvent)): Effects-of-calling:com.dmdirc.util.URLHandler:substituteParams
    }
    //#URLProtocolPanel.java:284: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.removeUpdate(DocumentEvent)

    /** {@inheritDoc} */
    @Override
    public void changedUpdate(final DocumentEvent e) {
    //Ignore
    }
    //#URLProtocolPanel.java:290: method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.changedUpdate(DocumentEvent)
    //#URLProtocolPanel.java:290: end of method: void com.dmdirc.addons.ui_swing.components.URLProtocolPanel.changedUpdate(DocumentEvent)
}
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel]
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.getSelection()Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.save()V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.setEnabled(Z)V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.updateExample()V
    //#output(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.updateSelection()V
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/URLProtocolPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.changedUpdate(Ljavax/swing/event/DocumentEvent;)V == &changedUpdate
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.getSelection()Ljava/lang/String; == &getSelection
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.insertUpdate(Ljavax/swing/event/DocumentEvent;)V == &insertUpdate
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.removeUpdate(Ljavax/swing/event/DocumentEvent;)V == &removeUpdate
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.save()V == &save
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.setEnabled(Z)V == &setEnabled
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.updateExample()V == &updateExample
    //#post(com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init): __Dispatch_Table.updateSelection()V == &updateSelection
    //#URLProtocolPanel.java:: end of method: com.dmdirc.addons.ui_swing.components.URLProtocolPanel.com.dmdirc.addons.ui_swing.components.URLProtocolPanel__static_init
    //#URLProtocolPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.URLProtocolPanel
