use of org.jivesoftware.spark.util.SwingTimerTask in project Spark by igniterealtime.
the class UserManager method searchContacts.
public void searchContacts(String contact, final JFrame parent) {
if (parents.get(parent) == null && parent.getGlassPane() != null) {
parents.put(parent, parent.getGlassPane());
}
// Make sure we are using the default glass pane
final Component glassPane = parents.get(parent);
parent.setGlassPane(glassPane);
final Map<String, ContactItem> contactMap = new HashMap<>();
final List<ContactItem> contacts = new ArrayList<>();
final ContactList contactList = SparkManager.getWorkspace().getContactList();
for (ContactGroup contactGroup : contactList.getContactGroups()) {
contactGroup.clearSelection();
for (ContactItem contactItem : contactGroup.getContactItems()) {
if (!contactMap.containsKey(contactItem.getJID())) {
contacts.add(contactItem);
contactMap.put(contactItem.getJID(), contactItem);
}
}
}
// Sort
Collections.sort(contacts, itemComparator);
final JContactItemField contactField = new JContactItemField(new ArrayList<>(contacts));
JPanel layoutPanel = new JPanel();
layoutPanel.setLayout(new GridBagLayout());
JLabel enterLabel = new JLabel(Res.getString("label.contact.to.find"));
enterLabel.setFont(new Font("dialog", Font.BOLD, 10));
layoutPanel.add(enterLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
layoutPanel.add(contactField, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 50, 0));
layoutPanel.setBorder(BorderFactory.createBevelBorder(0));
contactField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent keyEvent) {
if (keyEvent.getKeyChar() == KeyEvent.VK_ENTER) {
if (ModelUtil.hasLength(contactField.getText())) {
ContactItem item = contactMap.get(contactField.getText());
if (item == null) {
item = contactField.getSelectedContactItem();
}
if (item != null) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
SparkManager.getChatManager().activateChat(item.getJID(), item.getDisplayName());
}
}
} else if (keyEvent.getKeyChar() == KeyEvent.VK_ESCAPE) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
}
}
});
contactField.getList().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
contactField.setSelectetIndex(e);
ContactItem item = contactField.getSelectedContactItem();
MouseEvent exx = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiers(), e.getX() + 20, e.getY(), e.getClickCount(), false);
SparkManager.getContactList().setSelectedUser(item.getJID());
SparkManager.getContactList().showPopup(contactField.getPopup(), exx, item);
}
if (e.getClickCount() == 2) {
if (ModelUtil.hasLength(contactField.getText())) {
ContactItem item = contactMap.get(contactField.getText());
if (item == null) {
item = contactField.getSelectedContactItem();
}
if (item != null) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
SparkManager.getChatManager().activateChat(item.getJID(), item.getDisplayName());
}
}
}
}
});
final JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.setLayout(new GridBagLayout());
mainPanel.add(layoutPanel, new GridBagConstraints(0, 0, 1, 1, 0.5, 0.5, GridBagConstraints.NORTH, GridBagConstraints.NONE, new Insets(SparkManager.getMainWindow().getTopToolBar().getHeight() + SparkManager.getWorkspace().getStatusBar().getHeight() + 47, 1, 5, 1), 200, 0));
mainPanel.setOpaque(false);
contactField.setText(contact);
parent.setGlassPane(mainPanel);
parent.getGlassPane().setVisible(true);
contactField.focus();
mainPanel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent mouseEvent) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
}
});
parent.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
parent.setGlassPane(glassPane);
parent.getGlassPane().setVisible(false);
contactField.dispose();
parent.removeWindowListener(this);
}
public void windowDeactivated(final WindowEvent windowEvent) {
TimerTask task = new SwingTimerTask() {
public void doRun() {
if (contactField.canClose()) {
windowClosing(windowEvent);
}
}
};
TaskEngine.getInstance().schedule(task, 250);
}
});
}
use of org.jivesoftware.spark.util.SwingTimerTask in project Spark by igniterealtime.
the class BuzzRoomDecorator method actionPerformed.
public void actionPerformed(ActionEvent e) {
final String jid = ((ChatRoomImpl) chatRoom).getParticipantJID();
Message message = new Message();
message.setTo(jid);
message.addExtension(new BuzzPacket());
try {
SparkManager.getConnection().sendStanza(message);
} catch (SmackException.NotConnectedException e1) {
Log.warning("Unable to send stanza to " + jid, e1);
}
chatRoom.getTranscriptWindow().insertNotificationMessage(Res.getString("message.buzz.sent"), ChatManager.NOTIFICATION_COLOR);
buzzButton.setEnabled(false);
// Enable the button after 30 seconds to prevent abuse.
final TimerTask enableTask = new SwingTimerTask() {
public void doRun() {
buzzButton.setEnabled(true);
}
};
TaskEngine.getInstance().schedule(enableTask, 30000);
}
use of org.jivesoftware.spark.util.SwingTimerTask in project Spark by igniterealtime.
the class NotificationPlugin method initialize.
public void initialize() {
// Add the preferences
NotificationsPreference notifications = new NotificationsPreference();
SparkManager.getPreferenceManager().addPreference(notifications);
notifications.load();
final TimerTask registerTask = new SwingTimerTask() {
public void doRun() {
registerListener();
}
};
TaskEngine.getInstance().schedule(registerTask, 5000);
}
use of org.jivesoftware.spark.util.SwingTimerTask in project Spark by igniterealtime.
the class IncomingCall method showIncomingCall.
/**
* Notifies user of an incoming call. The UI allows for users to either accept or reject
* the incoming session.
*
* @param request the JingleSession.
*/
private void showIncomingCall(final JingleSessionRequest request) {
toasterManager = new SparkToaster();
toasterManager.setHidable(false);
final IncomingCallUI incomingCall = new IncomingCallUI(request.getFrom());
toasterManager.setToasterHeight(175);
toasterManager.setToasterWidth(300);
toasterManager.setDisplayTime(500000000);
toasterManager.showToaster("Incoming Voice Chat", incomingCall);
toasterManager.hideTitle();
incomingCall.getAcceptButton().addActionListener(e -> acceptSession(request));
incomingCall.getRejectButton().addActionListener(e -> rejectIncomingCall());
// Start the ringing.
final Runnable ringer = () -> ringing.loop();
TaskEngine.getInstance().submit(ringer);
// End after 30 seconds max.
TimerTask endTask = new SwingTimerTask() {
public void doRun() {
if (!session.isFullyEstablished()) {
rejectIncomingCall();
}
}
};
TaskEngine.getInstance().schedule(endTask, 30000);
}
use of org.jivesoftware.spark.util.SwingTimerTask in project Spark by igniterealtime.
the class IncomingCall method sessionEstablished.
public void sessionEstablished(PayloadType payloadType, TransportCandidate transportCandidate, TransportCandidate transportCandidate1, JingleSession jingleSession) {
established = true;
mediaReceivedTask = new SwingTimerTask() {
public void doRun() {
if (!mediaReceived) {
if (session != null) {
try {
session.terminate("No Media Received. This may be caused by firewall configuration problems.");
} catch (XMPPException | SmackException e) {
Log.error(e);
}
}
}
}
};
TaskEngine.getInstance().schedule(mediaReceivedTask, WAIT_FOR_MEDIA_DELAY, WAIT_FOR_MEDIA_DELAY);
}
Aggregations