/* * The MIT License * * Copyright 2014, 2015, 2016 Rui Martinho (rmartinho@gmail.com), António Braz (antoniocbraz@gmail.com) * * 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 org.poreid.dialogs.selectcard; import java.awt.Dialog; import org.poreid.dialogs.DialogEventListener; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import javax.swing.DefaultListModel; import org.poreid.common.Util; import org.poreid.config.POReIDConfig; /** * * @author POReID * @param <T> Classe que implemente a interface POReIDSmartCard */ public class SelectCardDialog<T> extends javax.swing.JDialog { private final DefaultListModel<T> model = new DefaultListModel<>(); private final DialogEventListener<T> listener; private final ResourceBundle bundle; /** * Creates new form SelectCardDialog * @param list Lista de classes que implementam a interface POReIDSmartCard * @param locale Linguagem utilizada * @param listener Objecto a notificar */ public SelectCardDialog(final List<T> list, Locale locale, DialogEventListener<T> listener) { super((Dialog)null, true); setIconImages(Util.getIconImages()); this.listener = listener; for (T t : list) { model.addElement(t); } bundle = POReIDConfig.getBundle(SelectCardDialog.class.getSimpleName(),locale); initComponents(); this.setTitle(bundle.getString("dialog.title")); this.getAccessibleContext().setAccessibleDescription(bundle.getString("dialog.description")); } /** * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form * Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel2 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); availableCards = new javax.swing.JList(); jPanel1 = new javax.swing.JPanel(); selectBtn = new javax.swing.JButton(); cancelBtn = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setAlwaysOnTop(true); setBackground(new java.awt.Color(228, 228, 228)); setIconImage(null); setModal(true); setResizable(false); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); jPanel2.setBackground(new java.awt.Color(228, 228, 228)); availableCards.setModel(model); availableCards.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); availableCards.setToolTipText(bundle.getString("list.tooltip")); availableCards.getAccessibleContext().setAccessibleDescription(bundle.getString("list.description")); availableCards.setCellRenderer(new SelectCardListCellRenderer()); availableCards.setVisibleRowCount(5); availableCards.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { availableCardsValueChanged(evt); } }); jScrollPane2.setViewportView(availableCards); jPanel1.setBackground(new java.awt.Color(228, 228, 228)); jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 50, 2)); selectBtn.setFont(selectBtn.getFont().deriveFont(selectBtn.getFont().getSize()-1f)); selectBtn.setText(bundle.getString("select.button")); selectBtn.getAccessibleContext().setAccessibleDescription(bundle.getString("select.button.description")); selectBtn.setAutoscrolls(true); selectBtn.setEnabled(false); selectBtn.setMaximumSize(new java.awt.Dimension(136, 30)); selectBtn.setMinimumSize(new java.awt.Dimension(136, 30)); selectBtn.setPreferredSize(new java.awt.Dimension(136, 30)); selectBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectBtnActionPerformed(evt); } }); jPanel1.add(selectBtn); cancelBtn.setFont(cancelBtn.getFont().deriveFont(cancelBtn.getFont().getSize()-1f)); cancelBtn.setText(bundle.getString("cancel.button")); cancelBtn.getAccessibleContext().setAccessibleDescription(bundle.getString("cancel.button.description")); cancelBtn.setMaximumSize(new java.awt.Dimension(136, 30)); cancelBtn.setMinimumSize(new java.awt.Dimension(136, 30)); cancelBtn.setPreferredSize(new java.awt.Dimension(136, 30)); cancelBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelBtnActionPerformed(evt); } }); jPanel1.add(cancelBtn); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 413, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 413, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(0, 0, 0) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); setLocationRelativeTo(null); }// </editor-fold>//GEN-END:initComponents private void availableCardsValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_availableCardsValueChanged if (!evt.getValueIsAdjusting() && null != availableCards.getSelectedValue()) { selectBtn.setEnabled(true); } else { selectBtn.setEnabled(false); } }//GEN-LAST:event_availableCardsValueChanged @SuppressWarnings({"unchecked", "varargs"}) private void selectBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectBtnActionPerformed listener.onContinue(availableCards.getSelectedValue()); dispose(); }//GEN-LAST:event_selectBtnActionPerformed private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelBtnActionPerformed listener.onCancel(); setVisible(false); dispose(); }//GEN-LAST:event_cancelBtnActionPerformed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing listener.onDiagloclosed(); setVisible(false); dispose(); }//GEN-LAST:event_formWindowClosing // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JList<T> availableCards; private javax.swing.JButton cancelBtn; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JButton selectBtn; // End of variables declaration//GEN-END:variables }