    protected void performAction(final Node[] nodes) {
        final Map<RMUser, RegistryProject> map = new HashMap<RMUser, RegistryProject>();
        for (final Node node : nodes) {
            final Set<RMUser> users = node.getCookie(RMUserCookie.class).getRMUsers();
            final RegistryProject project = node.getCookie(RegistryProjectCookie.class).getProject();
            for (final RMUser user : users) {
                map.put(user, project);
            }
        }
        final String message = JOptionPane.showInputDialog(
                WindowManager.getDefault().getMainWindow(),
                NbBundle.getMessage(
                    SendMessageAction.class,
                    "SendMessageAction.performAction(Node[]).message",
                    map.size()));
        if ((message != null) && (message.trim().isEmpty())) {
            for (final Entry<RMUser, RegistryProject> entry : map.entrySet()) {
                final RegistryProject project = entry.getValue();
                final RMUser user = entry.getKey();
                try {
                    project.getMessageForwarder()
                            .sendMessage(
                                user.getQualifiedName(),
                                user.getIpAddress(),
                                message,
                                org.openide.util.NbBundle.getMessage(
                                    SendMessageAction.class,
                                    "SendMessageAction.performAction(Node[]).messageFromAdmin")); 
                } catch (final RemoteException ex) {
                    LOG.error("could not send message", ex);                                      
                } catch (final UnableToSendMessageException ex) {
                    LOG.error("could not send message", ex);                                      
                }
            }
        }
    }

    protected void performAction(final Node[] nodes) {
        final Map<RMUser, RegistryProject> map = new HashMap<RMUser, RegistryProject>();
        for (final Node node : nodes) {
            final Set<RMUser> users = node.getCookie(RMUserCookie.class).getRMUsers();
            final RegistryProject project = node.getCookie(RegistryProjectCookie.class).getProject();
            for (final RMUser user : users) {
                map.put(user, project);
            }
        }
        final String message = JOptionPane.showInputDialog(
                WindowManager.getDefault().getMainWindow(),
                NbBundle.getMessage(
                    SendMessageAction.class,
                    "SendMessageAction.performAction(Node[]).message",
                    map.size()));
        if ((message != null) && (!message.trim().isEmpty())) {
            for (final Entry<RMUser, RegistryProject> entry : map.entrySet()) {
                final RegistryProject project = entry.getValue();
                final RMUser user = entry.getKey();
                try {
                    project.getMessageForwarder()
                            .sendMessage(
                                user.getQualifiedName(),
                                user.getIpAddress(),
                                message,
                                org.openide.util.NbBundle.getMessage(
                                    SendMessageAction.class,
                                    "SendMessageAction.performAction(Node[]).messageFromAdmin")); 
                } catch (final RemoteException ex) {
                    LOG.error("could not send message", ex);                                      
                } catch (final UnableToSendMessageException ex) {
                    LOG.error("could not send message", ex);                                      
                }
            }
        }
    }
