private void showAddMemberDialog() { Slice slice = (Slice) sliceList.getSelectedValue(); HashSet<String> existingMembers = new HashSet<String>(); for (int i = 0; i < slice.members.size(); i++) existingMembers.add(slice.members.get(i).urn); HashSet<String> nonMembers = new HashSet<String>(); Object[] allMembers = mainGUI.getMembersArray(); for (int i = 0; i < allMembers.length; i++) { Member m = (Member) allMembers[i]; // Ignore Revoked members if (MemberAuthorityAPI.crl.getRevokedCertificate(m.cert) != null) continue; String urn = m.urn; if (!existingMembers.contains(urn)) nonMembers.add(urn); } String[] choiceArray = nonMembers.toArray(new String[0]); if (choiceArray.length == 0) { JOptionPane.showMessageDialog( Slices.this, "There are no more active members to add to this slice.", "Add Member", JOptionPane.INFORMATION_MESSAGE); } else { String newMember = (String) JOptionPane.showInputDialog( null, "Select new member for slice " + slice.name + "\n", "Add Member", JOptionPane.PLAIN_MESSAGE, null, choiceArray, choiceArray[0]); if (newMember != null) { Membership mem = SliceAuthorityAPI.addMember(slice.urn, newMember, "SLICE"); if (mem != null) { tableModel.add(newMember, "MEMBER"); slice.members.add(mem); } else showErrorMessage(); } } }