Package net.sphene.goim.ingame.directx

Source Code of net.sphene.goim.ingame.directx.DXInGameMessengerExtension$DXInGameMessageBridgeImpl

package net.sphene.goim.ingame.directx;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.IPreferenceStore;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.muc.MultiUserChat;

import net.sphene.goim.rcp.beans.GOIMAccount;
import net.sphene.goim.rcp.extensionpoints.IChatWindowManager;
import net.sphene.goim.rcp.ui.chat.GOIMChatObject;

public class DXInGameMessengerExtension implements IChatWindowManager {
  DXInGameMessageBridgeImpl bridge;
 
  Map<String, GOIMChatObject> chatIds = new HashMap<String,GOIMChatObject>();
 
 
  String launchedGame = null;
  public DXInGameMessengerExtension() {
    bridge = new DXInGameMessageBridgeImpl();
    DXInGameMessenger.getDefault().registerDXInGameMessengerExtension(this);
  }

  public boolean handleMessage(GOIMAccount account, Message msg, boolean alreadyHandled) {
    if(msg != null && msg.getBody() != null) {
      if(chatIds.get(msg.getFrom()) == null)
        chatIds.put(msg.getFrom(),
            new GOIMChatObject(account,msg.getFrom(),msg.getThread()));
      RosterEntry entry = account.xmpp.getRoster().getEntry(StringUtils.parseBareAddress(msg.getFrom()));
      String nick = entry == null ? msg.getFrom() : (entry.getName() == null ? entry.getUser() : entry.getName());
      bridge.sendMessage(msg.getFrom(),
          nick,
          "<" + nick + "> " + msg.getBody());
      if(launchedGame != null) return true;
    }
    return false;
  }

  public boolean openWindow(GOIMAccount account, String jid, boolean tryBareAddress) {
    // ignored
    return false;
  }

  public boolean openMUCWindow(GOIMAccount account, String jid, MultiUserChat muc) {
    // ignored
    return false;
  }
 
  public class DXInGameMessageBridgeImpl extends DXInGameMessageBridge {
    @Override
    public void replyMessage(String jabberId, String msg) {
      System.out.println("got replyMessage(" + jabberId + "," + msg + ")");
      if(msg.startsWith("/")) {
        if(msg.equals("/time")) {
          bridge.sendMessage("","","Current time is " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        } else if(msg.equals("/version")) {
          bridge.sendMessage("","","Gamers Own Instant Messenger V" + Platform.getProduct().getDefiningBundle().getHeaders().get("Bundle-Version") + " (InGame Messenger V" + DXInGameMessenger.getDefault().getBundle().getHeaders().get("Bundle-Version") + ")");
          bridge.sendMessage("","","(C) Copyright 2005-2006 by Herbert Poul - http://goim.us");
        }
      } else {
        if(StringUtils.parseServer(jabberId).equals("|dxhook")) {
          gotInternalMessage(StringUtils.parseName(jabberId),msg);
        } else {
          GOIMChatObject chat = chatIds.get(jabberId);
          if(chat != null) {
            Message message = chat.createMessage();
            message.setBody(msg);
            chat.sendMessage(message);
          }
        }
      }
    }
  }
 
  public void gotInternalMessage(String name, String msg) {
    if(name.equals("launch")) {
      System.out.println("A game was launched: " + msg);
      if(launchedGame != null)
        System.out.println(" ??????? Another game is already launched: " + launchedGame);
      launchedGame = msg;
      bridge.sendMessage("setduration@|dxhook","","20000");
      IPreferenceStore store = DXInGameMessenger.getDefault().getPreferenceStore();
      if(!store.isDefault("pos:" + launchedGame)) {
        System.out.println("setpos@|dxhook: " + store.getString("pos:" + launchedGame));
        bridge.sendMessage("setpos@|dxhook","",store.getString("pos:" + launchedGame));
      } else {
        System.out.println("pos of " + launchedGame + " is default ..");
      }
    } else if(name.equals("terminate")) {
      System.out.println("A game was terminated: " + msg);
      if(launchedGame == null)
        System.out.println(" ??????? No game currently launched ?");
      launchedGame = null;
    } else if(name.equals("newpos")) {
      IPreferenceStore store = DXInGameMessenger.getDefault().getPreferenceStore();
      store.setValue("pos:" + launchedGame,msg);
      System.out.println("newpos ... of " + launchedGame + " is " + msg);
    }
  }

  public DXInGameMessageBridge getMessageBridge() {
    return bridge;
  }
}
TOP

Related Classes of net.sphene.goim.ingame.directx.DXInGameMessengerExtension$DXInGameMessageBridgeImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.