@Override public Void doInBackground() throws Exception { StringBuilder message = new StringBuilder(); try { getManager().deleteBean(t, "CanDelete"); // IN18N } catch (PropertyVetoException e) { if (e.getPropertyChangeEvent().getPropertyName().equals("DoNotDelete")) { // IN18N log.warn(e.getMessage()); message.append( Bundle.getMessage( "VetoDeleteBean", t.getBeanType(), t.getFullyFormattedDisplayName(), e.getMessage())); JOptionPane.showMessageDialog( null, message.toString(), Bundle.getMessage("WarningTitle"), JOptionPane.ERROR_MESSAGE); return null; } message.append(e.getMessage()); } int count = t.getNumPropertyChangeListeners(); if (log.isDebugEnabled()) { log.debug("Delete with " + count); } if (getDisplayDeleteMsg() == 0x02 && message.toString().equals("")) { doDelete(t); } else { final JDialog dialog = new JDialog(); dialog.setTitle(Bundle.getMessage("WarningTitle")); dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); JPanel container = new JPanel(); container.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS)); if (count > 0) { // warn of listeners attached before delete JLabel question = new JLabel(Bundle.getMessage("DeletePrompt", t.getFullyFormattedDisplayName())); question.setAlignmentX(Component.CENTER_ALIGNMENT); container.add(question); ArrayList<String> listenerRefs = t.getListenerRefs(); if (listenerRefs.size() > 0) { ArrayList<String> listeners = new ArrayList<>(); for (int i = 0; i < listenerRefs.size(); i++) { if (!listeners.contains(listenerRefs.get(i))) { listeners.add(listenerRefs.get(i)); } } message.append("<br>"); message.append(Bundle.getMessage("ReminderInUse", count)); message.append("<ul>"); for (int i = 0; i < listeners.size(); i++) { message.append("<li>"); message.append(listeners.get(i)); message.append("</li>"); } message.append("</ul>"); JEditorPane pane = new JEditorPane(); pane.setContentType("text/html"); pane.setText("<html>" + message.toString() + "</html>"); pane.setEditable(false); JScrollPane jScrollPane = new JScrollPane(pane); container.add(jScrollPane); } } else { String msg = MessageFormat.format( Bundle.getMessage("DeletePrompt"), new Object[] {t.getSystemName()}); JLabel question = new JLabel(msg); question.setAlignmentX(Component.CENTER_ALIGNMENT); container.add(question); } final JCheckBox remember = new JCheckBox(Bundle.getMessage("MessageRememberSetting")); remember.setFont(remember.getFont().deriveFont(10f)); remember.setAlignmentX(Component.CENTER_ALIGNMENT); JButton yesButton = new JButton(Bundle.getMessage("ButtonYes")); JButton noButton = new JButton(Bundle.getMessage("ButtonNo")); JPanel button = new JPanel(); button.setAlignmentX(Component.CENTER_ALIGNMENT); button.add(yesButton); button.add(noButton); container.add(button); noButton.addActionListener( (ActionEvent e) -> { // there is no point in remembering this the user will never be // able to delete a bean! dialog.dispose(); }); yesButton.addActionListener( (ActionEvent e) -> { if (remember.isSelected()) { setDisplayDeleteMsg(0x02); } doDelete(t); dialog.dispose(); }); container.add(remember); container.setAlignmentX(Component.CENTER_ALIGNMENT); container.setAlignmentY(Component.CENTER_ALIGNMENT); dialog.getContentPane().add(container); dialog.pack(); dialog.setLocation( (Toolkit.getDefaultToolkit().getScreenSize().width) / 2 - dialog.getWidth() / 2, (Toolkit.getDefaultToolkit().getScreenSize().height) / 2 - dialog.getHeight() / 2); dialog.setModal(true); dialog.setVisible(true); } return null; }