//# 0 errors, 120 messages
//#
/*
    //#CertificateChainPanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#CertificateChainPanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__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.dialogs.sslcertificate;

import com.dmdirc.ui.IconManager;
import com.dmdirc.ui.core.dialogs.sslcertificate.CertificateChainEntry;
import com.dmdirc.addons.ui_swing.components.ListScroller;
import com.dmdirc.addons.ui_swing.components.renderers.CertificateChainEntryCellRenderer;

import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;

import net.miginfocom.swing.MigLayout;

/**
 * Displays the certificate chain.
 */
public class CertificateChainPanel extends JPanel {

    /**
     * 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;
    /** Certificate chain list. */
    private List<CertificateChainEntry> certificateChain;
    /** Chain list. */
    private JList list;
    /** List model. */
    private DefaultListModel model;

    public CertificateChainPanel() {
    //#CertificateChainPanel.java:61: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new DefaultListModel(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new JList(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): this.list
    //#output(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): this.model
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new DefaultListModel(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new JList(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): this.list == &new JList(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): this.model == &new DefaultListModel(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new DefaultListModel(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): new JList(initComponents#2) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.DefaultListModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.JList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.renderers.CertificateChainEntryCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.JList:setCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.JList:setSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.ListScroller
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.BorderFactory:createTitledBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.ui.IconManager:getIconManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:com.dmdirc.ui.IconManager:getIcon
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()): Effects-of-calling:javax.swing.JLabel
        initComponents();
        layoutComponents();
    }
    //#CertificateChainPanel.java:64: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel()

    private void initComponents() {
        model = new DefaultListModel();
    //#CertificateChainPanel.java:67: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.initComponents()
    //#input(void initComponents()): this
    //#output(void initComponents()): new DefaultListModel(initComponents#1) num objects
    //#output(void initComponents()): new JList(initComponents#2) num objects
    //#output(void initComponents()): this.list
    //#output(void initComponents()): this.model
    //#new obj(void initComponents()): new DefaultListModel(initComponents#1)
    //#new obj(void initComponents()): new JList(initComponents#2)
    //#post(void initComponents()): this.list == &new JList(initComponents#2)
    //#post(void initComponents()): this.model == &new DefaultListModel(initComponents#1)
    //#post(void initComponents()): new DefaultListModel(initComponents#1) num objects == 1
    //#post(void initComponents()): new JList(initComponents#2) num objects == 1
        list = new JList(model);
        list.setCellRenderer(new CertificateChainEntryCellRenderer());
    //#CertificateChainPanel.java:69: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.renderers.CertificateChainEntryCellRenderer()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.renderers.CertificateChainEntryCellRenderer()
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        new ListScroller(list);
    //#CertificateChainPanel.java:71: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.ListScroller(JList)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.ListScroller(JList)
    }
    //#CertificateChainPanel.java:72: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.initComponents()

    private void layoutComponents() {
        setBorder(BorderFactory.createTitledBorder("Certificate Chain"));
    //#CertificateChainPanel.java:75: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.layoutComponents()
    //#CertificateChainPanel.java:75: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setBorder(Border)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setBorder(Border)
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.list
    //#pre[2] (void layoutComponents()): init'ed(this.list)
    //#presumption(void layoutComponents()): com.dmdirc.ui.IconManager:getIconManager(...)@79 != null
    //#presumption(void layoutComponents()): com.dmdirc.ui.IconManager:getIconManager(...)@81 != null
        setLayout(new MigLayout("fillx, wrap 1"));
    //#CertificateChainPanel.java:76: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#CertificateChainPanel.java:76: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:setLayout(LayoutManager)

        add(new JScrollPane(list), "grow, pushy");
    //#CertificateChainPanel.java:78: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
        add(new JLabel("Certificate is trusted", IconManager.getIconManager().
    //#CertificateChainPanel.java:79: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#CertificateChainPanel.java:79: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#CertificateChainPanel.java:79: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
                getIcon("tick"), JLabel.LEFT), "growx");
        add(new JLabel("Problem with certificate", IconManager.getIconManager().
    //#CertificateChainPanel.java:81: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#CertificateChainPanel.java:81: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#CertificateChainPanel.java:81: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel:add(Component, Object)
                getIcon("cross"), JLabel.LEFT), "growx");
    }
    //#CertificateChainPanel.java:83: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.layoutComponents()

    public void setChain(final List<CertificateChainEntry> certificateChain) {
        this.certificateChain = certificateChain;
    //#CertificateChainPanel.java:86: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.setChain(List)
    //#input(void setChain(List)): certificateChain
    //#input(void setChain(List)): this
    //#input(void setChain(List)): this.model
    //#output(void setChain(List)): this.certificateChain
    //#pre[3] (void setChain(List)): (soft) this.model != null
    //#post(void setChain(List)): this.certificateChain == certificateChain
    //#post(void setChain(List)): init'ed(this.certificateChain)
    //#test_vector(void setChain(List)): certificateChain: Inverse{null}, Addr_Set{null}
    //#test_vector(void setChain(List)): java.util.Iterator:hasNext(...)@91: {0}, {1}

        if (certificateChain == null) {
            model.clear();
        } else {
            for (CertificateChainEntry entry : certificateChain) {
                model.addElement(entry);
            }
        }
    }
    //#CertificateChainPanel.java:95: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.setChain(List)

    public String getName(final int index) {
        return ((CertificateChainEntry) model.get(index)).getName();
    //#CertificateChainPanel.java:98: method: String com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.getName(int)
    //#CertificateChainPanel.java:98: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.ui.core.dialogs.sslcertificate.CertificateChainEntry:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
    //#    method: String getName(int)
    //#    unanalyzed callee: String com.dmdirc.ui.core.dialogs.sslcertificate.CertificateChainEntry:getName()
    //#input(String getName(int)): index
    //#input(String getName(int)): this
    //#input(String getName(int)): this.model
    //#output(String getName(int)): return_value
    //#pre[3] (String getName(int)): this.model != null
    //#presumption(String getName(int)): javax.swing.DefaultListModel:get(...)@98 != null
    //#post(String getName(int)): init'ed(return_value)
    //#CertificateChainPanel.java:98: end of method: String com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.getName(int)
    }

    public int getSelectedIndex() {
        return list.getSelectedIndex();
    //#CertificateChainPanel.java:102: method: int com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.getSelectedIndex()
    //#input(int getSelectedIndex()): this
    //#input(int getSelectedIndex()): this.list
    //#output(int getSelectedIndex()): return_value
    //#pre[2] (int getSelectedIndex()): this.list != null
    //#post(int getSelectedIndex()): init'ed(return_value)
    //#CertificateChainPanel.java:102: end of method: int com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.getSelectedIndex()
    }

    public void setSelectedIndex(final int index) {
        list.setSelectedIndex(index);
    //#CertificateChainPanel.java:106: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.setSelectedIndex(int)
    //#input(void setSelectedIndex(int)): index
    //#input(void setSelectedIndex(int)): this
    //#input(void setSelectedIndex(int)): this.list
    //#pre[3] (void setSelectedIndex(int)): this.list != null
    }
    //#CertificateChainPanel.java:107: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.setSelectedIndex(int)

    public void addListSelectionListener(final ListSelectionListener listener) {
        list.addListSelectionListener(listener);
    //#CertificateChainPanel.java:110: method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.addListSelectionListener(ListSelectionListener)
    //#input(void addListSelectionListener(ListSelectionListener)): listener
    //#input(void addListSelectionListener(ListSelectionListener)): this
    //#input(void addListSelectionListener(ListSelectionListener)): this.list
    //#pre[3] (void addListSelectionListener(ListSelectionListener)): this.list != null
    }
    //#CertificateChainPanel.java:111: end of method: void com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.addListSelectionListener(ListSelectionListener)
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/sslcertificate/CertificateChainPanel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.addListSelectionListener(Ljavax/swing/event/ListSelectionListener;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.getName(I)Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.getSelectedIndex()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.setChain(Ljava/util/List;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.setSelectedIndex(I)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/sslcertificate/CertificateChainPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.addListSelectionListener(Ljavax/swing/event/ListSelectionListener;)V == &addListSelectionListener
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.getName(I)Ljava/lang/String; == &getName
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.getSelectedIndex()I == &getSelectedIndex
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.setChain(Ljava/util/List;)V == &setChain
    //#post(com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init): __Dispatch_Table.setSelectedIndex(I)V == &setSelectedIndex
    //#CertificateChainPanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel.com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel__static_init
    //#CertificateChainPanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.sslcertificate.CertificateChainPanel
