private void editKey(ECKey key, int row) throws BlockStoreException { Address addr = key.toAddress(); while (true) { addr = AddressEditDialog.showDialog(this, addr, false); if (addr == null) break; String label = addr.getLabel(); boolean valid = true; synchronized (BTCLoader.lock) { for (ECKey chkKey : BTCLoader.keys) { if (chkKey == key) continue; if (chkKey.getLabel().compareToIgnoreCase(label) == 0) { JOptionPane.showMessageDialog( this, "Duplicate name specified", "Error", JOptionPane.ERROR_MESSAGE); valid = false; break; } } if (valid) { if (row >= 0) BTCLoader.keys.remove(row); boolean added = false; for (int i = 0; i < BTCLoader.keys.size(); i++) { ECKey chkKey = BTCLoader.keys.get(i); if (chkKey.getLabel().compareToIgnoreCase(label) > 0) { key.setLabel(label); BTCLoader.keys.add(i, key); added = true; break; } } if (!added) { key.setLabel(label); BTCLoader.keys.add(key); } } } if (valid) { if (row >= 0) { BTCLoader.blockStore.setKeyLabel(key); } else { BTCLoader.blockStore.storeKey(key); BTCLoader.bloomFilter.insert(key.getPubKey()); BTCLoader.bloomFilter.insert(key.getPubKeyHash()); Message filterMsg = FilterLoadMessage.buildFilterLoadMessage(null, BTCLoader.bloomFilter); BTCLoader.networkHandler.broadcastMessage(filterMsg); } tableModel.fireTableDataChanged(); break; } } }
@Override public void actionPerformed(ActionEvent ae) { try { String action = ae.getActionCommand(); if (action.equals("done")) { setVisible(false); dispose(); } else if (action.equals("new")) { ECKey key = new ECKey(); editKey(key, -1); } else { int row = table.getSelectedRow(); if (row < 0) { JOptionPane.showMessageDialog( this, "No entry selected", "Error", JOptionPane.ERROR_MESSAGE); } else { row = table.convertRowIndexToModel(row); switch (action) { case "copy": String address = (String) tableModel.getValueAt(row, 1); StringSelection sel = new StringSelection(address); Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(sel, null); break; case "edit": ECKey key = BTCLoader.keys.get(row); editKey(key, row); break; } } } } catch (BlockStoreException exc) { ErrorLog.logException("Unable to update blockStore database", exc); } catch (Exception exc) { ErrorLog.logException("Exception while processing action event", exc); } }