use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.
the class SoundPlugin method initialize.
@Override
public void initialize() {
soundPreference = new SoundPreference();
SparkManager.getPreferenceManager().addPreference(soundPreference);
SparkManager.getChatManager().addChatRoomListener(this);
SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
Presence presence = (Presence) stanza;
if (!presence.isAvailable()) {
SoundPreferences preferences = soundPreference.getPreferences();
if (preferences != null && preferences.isPlayOfflineSound()) {
if (!PresenceManager.isOnline(presence.getFrom().asBareJid())) {
String offline = preferences.getOfflineSound();
File offlineFile = new File(offline);
SparkManager.getSoundManager().playClip(offlineFile);
}
}
}
}, new StanzaTypeFilter(Presence.class));
// Load sound preferences.
final Runnable soundLoader = () -> soundPreference.loadFromFile();
TaskEngine.getInstance().submit(soundLoader);
MultiUserChatManager.getInstanceFor(SparkManager.getConnection()).addInvitationListener((xmppConnection, muc, inviter, reason, password, message, invitation) -> {
SoundPreferences preferences = soundPreference.getPreferences();
if (preferences != null && preferences.playIncomingInvitationSound()) {
String incomingSoundFile = preferences.getIncomingInvitationSoundFile();
File offlineFile = new File(incomingSoundFile);
SparkManager.getSoundManager().playClip(offlineFile);
}
});
}
use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.
the class BattleshipPlugin method initialize.
@Override
public void initialize() {
ProviderManager.addIQProvider(GameOfferPacket.ELEMENT_NAME, GameOfferPacket.NAMESPACE, GameOfferPacket.class);
ProviderManager.addExtensionProvider(MovePacket.ELEMENT_NAME, MovePacket.NAMESPACE, MovePacket.class);
ProviderManager.addExtensionProvider(MoveAnswerPacket.ELEMENT_NAME, MoveAnswerPacket.NAMESPACE, MoveAnswerPacket.class);
_gameofferListener = new StanzaListener() {
@Override
public void processPacket(Stanza stanza) {
GameOfferPacket invitation = (GameOfferPacket) stanza;
if (invitation.getType() == IQ.Type.get) {
showInvitationInChat(invitation);
}
}
};
SparkManager.getConnection().addAsyncStanzaListener(_gameofferListener, new StanzaTypeFilter(GameOfferPacket.class));
_chatRoomListener = new ChatRoomOpeningListener();
SparkManager.getChatManager().addChatRoomListener(_chatRoomListener);
}
use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.
the class BroadcastPlugin method initialize.
@Override
public void initialize() {
// See if we should disable all "Broadcast" menu items
if (Default.getBoolean(Default.DISABLE_BROADCAST_MENU_ITEM) || !Enterprise.containsFeature(Enterprise.BROADCAST_FEATURE)) {
return;
}
// Add as ContainerDecoratr
SparkManager.getChatManager().addSparkTabHandler(this);
StanzaFilter serverFilter = new StanzaTypeFilter(Message.class);
SparkManager.getConnection().addAsyncStanzaListener(this, serverFilter);
// Register with action menu
final JMenu actionsMenu = SparkManager.getMainWindow().getMenuByName(Res.getString("menuitem.actions"));
JMenuItem broadcastHistoryMenu = new JMenuItem(Res.getString("title.broadcast.history"), SparkRes.getImageIcon(SparkRes.HISTORY_16x16));
JMenuItem broadcastMenu = new JMenuItem(Res.getString("title.broadcast.message"), SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
ResourceUtils.resButton(broadcastMenu, Res.getString("title.broadcast.message"));
actionsMenu.add(broadcastHistoryMenu);
actionsMenu.add(broadcastMenu);
broadcastMenu.addActionListener(e -> broadcastToRoster());
broadcastHistoryMenu.addActionListener(e -> new BroadcastHistoryFrame().run());
// Register with action menu
JMenuItem startConversationtMenu = new JMenuItem("", SparkRes.getImageIcon(SparkRes.SMALL_MESSAGE_IMAGE));
ResourceUtils.resButton(startConversationtMenu, Res.getString("menuitem.start.a.chat"));
if (!Default.getBoolean(Default.HIDE_START_A_CHAT) && Enterprise.containsFeature(Enterprise.START_A_CHAT_FEATURE)) {
actionsMenu.add(startConversationtMenu, 0);
}
startConversationtMenu.addActionListener(e -> {
ContactList contactList = SparkManager.getWorkspace().getContactList();
Collection<ContactItem> selectedUsers = contactList.getSelectedUsers();
String selectedUser = "";
Iterator<ContactItem> selectedUsersIterator = selectedUsers.iterator();
if (selectedUsersIterator.hasNext()) {
ContactItem contactItem = selectedUsersIterator.next();
selectedUser = contactItem.getJid().toString();
}
UIManager.put("OptionPane.okButtonText", Res.getString("ok"));
UIManager.put("OptionPane.cancelButtonText", Res.getString("cancel"));
String jid = (String) JOptionPane.showInputDialog(SparkManager.getMainWindow(), Res.getString("label.enter.address"), Res.getString("title.start.chat"), JOptionPane.QUESTION_MESSAGE, null, null, selectedUser);
if (ModelUtil.hasLength(jid) && ModelUtil.hasLength(XmppStringUtils.parseDomain(jid))) {
if (ModelUtil.hasLength(jid) && jid.indexOf('@') == -1) {
// Append server address
jid = jid + "@" + SparkManager.getConnection().getXMPPServiceDomain();
}
EntityBareJid entityBareJid = JidCreate.entityBareFromUnescapedOrThrowUnchecked(jid);
String nickname = SparkManager.getUserManager().getUserNicknameFromJID(entityBareJid);
ChatRoom chatRoom = SparkManager.getChatManager().createChatRoom(entityBareJid, nickname, nickname);
SparkManager.getChatManager().getChatContainer().activateChatRoom(chatRoom);
}
});
// Add send to selected users.
final ContactList contactList = SparkManager.getWorkspace().getContactList();
contactList.addContextMenuListener(new ContextMenuListener() {
@Override
public void poppingUp(Object component, JPopupMenu popup) {
if (component instanceof ContactGroup) {
final ContactGroup group = (ContactGroup) component;
Action broadcastMessageAction = new AbstractAction() {
private static final long serialVersionUID = -6411248110270296726L;
@Override
public void actionPerformed(ActionEvent e) {
broadcastToGroup(group);
}
};
broadcastMessageAction.putValue(Action.NAME, Res.getString("menuitem.broadcast.to.group"));
broadcastMessageAction.putValue(Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
popup.add(broadcastMessageAction);
}
}
@Override
public void poppingDown(JPopupMenu popup) {
}
@Override
public boolean handleDefaultAction(MouseEvent e) {
return false;
}
});
// Add Broadcast to roster
StatusBar statusBar = SparkManager.getWorkspace().getStatusBar();
RolloverButton broadcastToRosterButton = new RolloverButton(SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));
broadcastToRosterButton.setToolTipText(Res.getString("message.send.a.broadcast"));
statusBar.invalidate();
statusBar.validate();
statusBar.repaint();
broadcastToRosterButton.addActionListener(e -> broadcastToRoster());
}
use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Spark by igniterealtime.
the class JabberVersion method initialize.
@Override
public void initialize() {
// Populate Smack's Version Manager with Sparks version information.
VersionManager.getInstanceFor(SparkManager.getConnection()).setVersion(JiveInfo.getName(), JiveInfo.getVersion(), JiveInfo.getOS());
// Create IQ Filter
StanzaFilter packetFilter = new StanzaTypeFilter(IQ.class);
SparkManager.getConnection().addAsyncStanzaListener(stanza -> {
IQ iq = (IQ) stanza;
try {
if (iq instanceof Time && iq.getType() == IQ.Type.get) {
Time time = new Time();
time.setStanzaId(iq.getStanzaId());
time.setFrom(iq.getTo());
time.setTo(iq.getFrom());
time.setTime(new Date());
time.setType(IQ.Type.result);
// Send Time
SparkManager.getConnection().sendStanza(time);
}
} catch (SmackException.NotConnectedException e) {
Log.warning("Unable to answer request: " + stanza, e);
}
}, packetFilter);
final ContactList contactList = SparkManager.getWorkspace().getContactList();
contactList.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("control F11"), "viewClient");
contactList.addContextMenuListener(new ContextMenuListener() {
@Override
public void poppingUp(final Object component, JPopupMenu popup) {
if (!(component instanceof ContactItem)) {
return;
}
ContactItem contactItem = (ContactItem) component;
if (contactItem.getPresence() == null) {
return;
}
Action versionRequest = new AbstractAction() {
private static final long serialVersionUID = -5619737417315441711L;
@Override
public void actionPerformed(ActionEvent e) {
viewClient();
}
};
versionRequest.putValue(Action.NAME, Res.getString("menuitem.view.client.version"));
popup.add(versionRequest);
}
@Override
public void poppingDown(JPopupMenu popup) {
}
@Override
public boolean handleDefaultAction(MouseEvent e) {
return false;
}
});
contactList.getActionMap().put("viewClient", new AbstractAction("viewClient") {
private static final long serialVersionUID = 8282301357403753561L;
@Override
public void actionPerformed(ActionEvent evt) {
viewClient();
}
});
}
Aggregations