/****************************************************************************
* Copyright (c) 2007 Composent, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Jacek Pospychala <jacek.pospychala@pl.ibm.com> - bug 197329, 190851
*****************************************************************************/
package org.eclipse.ecf.internal.irc.ui;
import org.eclipse.ecf.presence.ui.chatroom.MessageRenderer;
public class IRCMessageRenderer extends MessageRenderer {
/**
* Messages sent by local user using /me command
*/
protected static final String IRC_ME_COLOR = "org.eclipse.ecf.presence.irc.ui.meColor"; //$NON-NLS-1$
protected static final String IRC_ME_FONT = "org.eclipse.ecf.presence.irc.ui.meFont"; //$NON-NLS-1$
private final static String ME_PREFIX = "\01ACTION "; //$NON-NLS-1$
private final static String ME_SUFFIX = "\01"; //$NON-NLS-1$
private boolean isActionMessage;
protected void doRender() {
String actionMessage = getActionMessage(message);
isActionMessage = (actionMessage != null);
if (isActionMessage) {
message = actionMessage;
}
super.doRender();
}
protected void appendNickname() {
if (isActionMessage) {
String message = originator + " "; //$NON-NLS-1$
append(message, IRC_ME_COLOR, null, IRC_ME_FONT);
} else {
super.appendNickname();
}
}
protected void appendMessage() {
if (isActionMessage) {
append(message, IRC_ME_COLOR, null, IRC_ME_FONT);
} else {
super.appendMessage();
}
}
private String getActionMessage(String message) {
if (message.startsWith(ME_PREFIX) && message.endsWith(ME_SUFFIX)) {
return message.substring(ME_PREFIX.length(), message.length() - ME_SUFFIX.length());
} else {
return null;
}
}
}