@Override protected Void doInBackground() { try { publish("Retrieving and decrypting mail list"); String myMailboxName = Configuration.getMyMailboxName(); if (myMailboxName != null) { TotalListItem[] listItems = WebServiceClient.getMailList(myMailboxName); for (TotalListItem item : listItems) { // decrypt them now, object will cache decrypted--doing it for the side effect item.getEncryptedListItem(Configuration.getMyPrivateKey()); } ListMailController.this.model.setItems(listItems); publish("Mail list ready."); return null; } publish("No mailbox currently selected"); ListMailController.this.model.clearItems(); return null; } catch (CommunicationFailureException e) { publish(Utils.ppStackTrace(e)); return null; } catch (FailedCryptException | JavaInstallationMissingComponentsException e) { publish(Utils.ppStackTrace(e)); return null; } catch (RuntimeException e) { System.out.println(Utils.ppStackTrace(e)); return null; } }
@Override public void itemStateChanged(ItemEvent e) { if (ListMailController.this.view.getCurrentHost() != null && !ListMailController.this .view .getCurrentHost() .equalsIgnoreCase(Configuration.getCurrentHost())) { if (ListMailController.this.view.getCurrentHost() != null) { Configuration.setCurrentHost(ListMailController.this.view.getCurrentHost()); } for (MailboxNameChangeListener listener : ListMailController.this.nameChangeListeners) { listener.nameChanged(new NameChangeEvent(Configuration.getMyMailboxName())); } (new RefreshListWorker()).execute(); try { MailboxCache.loadAllMailboxesFromServer(); } catch (IOException | JavaInstallationMissingComponentsException | FailedCryptException | InvalidSignatureException | CommunicationFailureException e1) { ListMailController.this.view.setInfo(Utils.ppStackTrace(e1)); } } }
@Override public void actionPerformed(ActionEvent e) { try { int selectedRow = ListMailController.this.view.getSelectedRow(); if (-1 == selectedRow) { return; } int result = JOptionPane.showConfirmDialog( ListMailController.this.view, String.format("Are you sure you want to delete this mail?"), "Confirm", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { TotalListItem item = ListMailController.this.model.getItemAtRow(selectedRow); EncryptedListItem decryptedItem = item.getEncryptedListItem( null); // was already decrypted and cached, don't need private key WebServiceClient.deleteMessage(item.getId(), decryptedItem.getAttachments()); new RefreshListWorker().execute(); } } catch (IOException | FailedCryptException | JavaInstallationMissingComponentsException | IllegalStateException | CommunicationFailureException e1) { ListMailController.this.view.setInfo(Utils.ppStackTrace(e1)); } }
@Override public void actionPerformed(ActionEvent e) { try { readMail(); } catch (IOException | FailedCryptException | JavaInstallationMissingComponentsException | IllegalStateException | CommunicationFailureException | InvalidSignatureException e1) { ListMailController.this.view.setInfo(Utils.ppStackTrace(e1)); } }
@Override public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 2) { try { readMail(); } catch (IllegalStateException | FailedCryptException | JavaInstallationMissingComponentsException | IOException | CommunicationFailureException | InvalidSignatureException e) { ListMailController.this.view.setInfo(Utils.ppStackTrace(e)); } } }