/*
* Copyright (C) 2011 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.errai.tools.monitoring;
import org.jboss.errai.bus.client.api.messaging.Message;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.regex.Pattern;
public class ConversationActivityMonitor extends ServiceActivityMonitor {
private final Pattern MATCHER;
public ConversationActivityMonitor(final ServerMonitorPanel serverMonitor, final String busId, final String service) {
super(serverMonitor, busId, service);
updateTitle(null);
removeWindowListener(defaultWindowListener);
addWindowListener(new WindowListener() {
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
handle.dispose();
serverMonitor.stopMonitor(service + ":Conversations");
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
});
MATCHER = Pattern.compile(service + ".*:RespondTo:.*");
}
@Override
public void attach(ActivityProcessor proc) {
handle = proc.registerEvent(EventType.MESSAGE, new MessageMonitor() {
public void monitorEvent(MessageEvent event) {
String incomingSubject = event.getSubject();
if (MATCHER.matcher(incomingSubject).matches()) {
notifyMessage(event.getTime(), (Message) event.getContents());
}
}
});
proc.notifyEvent(System.currentTimeMillis(), EventType.REPLAY_MESSAGES, SubEventType.NONE, null, null, service + "%:RespondTo:%", null, null, false);
}
public void updateTitle(String s) {
if (s == null) setTitle("Conversations: " + service + "@" + busId);
else setTitle("Conversations: " + service + "@" + busId + ": " + s);
}
}