package org.wiztools.restclient.ui.reqssl; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.MessageFormat; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.wiztools.restclient.bean.KeyStoreType; import org.wiztools.restclient.bean.SSLKeyStore; import org.wiztools.restclient.ui.RCFileView; import org.wiztools.restclient.ui.UIUtil; /** * * @author subwiz */ public class KeyStorePanel extends JPanel implements KeyStoreListener { @Inject private KeyStoreDialog jd; private final JLabel jl = new JLabel(); private final JTextField jtf = new JTextField(23); private final JButton jb_addEdit = new JButton(UIUtil.getIconFromClasspath(RCFileView.iconBasePath + "pencil_add.png")); private final JButton jb_clear = new JButton(UIUtil.getIconFromClasspath(RCFileView.iconBasePath + "delete.png")); private SSLKeyStore keyStore = null; private static final String tmpl = "type={0}; fileName={1}; password={2}"; @PostConstruct public void init() { jtf.setEditable(false); jd.addKeyStoreListener(this); jb_addEdit.setToolTipText("Add / Edit"); jb_clear.setToolTipText("Clear"); jb_addEdit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { onAddEdit(); } }); jb_clear.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { clear(); } }); jtf.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2) { onAddEdit(); } } }); JPanel jp_jtf = new JPanel(new FlowLayout(FlowLayout.RIGHT)); jp_jtf.add(jtf); setLayout(new BorderLayout()); add(jl, BorderLayout.WEST); add(jp_jtf, BorderLayout.CENTER); add(UIUtil.getFlowLayoutLeftAlignedMulti(jb_addEdit, jb_clear), BorderLayout.EAST); } public void setLabel(String label) { jl.setText(label); } public void setTitle(String title) { jd.setTitle(title); } @Override public void onOk(SSLKeyStore store) { String pwdAvailable = store.getType() == KeyStoreType.PEM? "NA": (store.getPassword()!=null && store.getPassword().length > 0)? "Yes": "No"; String txt = MessageFormat.format(tmpl, store.getType(), store.getFile().getName(), pwdAvailable); jtf.setText(txt); jtf.setCaretPosition(0); keyStore = store; } @Override public void onCancel() { // set the previous value: jd.setKeyStore(keyStore); } public SSLKeyStore getKeyStore() { return keyStore; } public void setKeyStore(SSLKeyStore store) { if(store != null) { jd.setKeyStore(store); onOk(store); } else { clear(); } } private void onAddEdit() { jd.setVisible(true); } public void clear() { jd.clear(); jtf.setText(""); keyStore = null; } }