package org.limewire.ui.swing.friends;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import org.limewire.friend.api.FriendRequestEvent;
import org.limewire.inject.EagerSingleton;
import org.limewire.listener.EventListener;
import org.limewire.listener.ListenerSupport;
import org.limewire.listener.SwingEDTEvent;
import com.google.inject.Inject;
import com.google.inject.Provider;
@EagerSingleton
public class FriendRequestNotificationController extends ComponentAdapter {
private FriendRequestNotificationPanel currentPanel = null;
private final Provider<FriendRequestNotificationPanel> friendRequestNotifiactionPanelProvider;
@Inject
public FriendRequestNotificationController(
Provider<FriendRequestNotificationPanel> friendRequestNotifiactionPanelProvider) {
this.friendRequestNotifiactionPanelProvider = friendRequestNotifiactionPanelProvider;
}
@Inject
public void register(ListenerSupport<FriendRequestEvent> friendRequestListeners) {
friendRequestListeners.addListener(new EventListener<FriendRequestEvent>() {
/* Testing code. Please leave in until further notice.
{
new Timer(5000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
requests();
}
}).start();
}
public void requests() {
handleEvent(new FriendRequestEvent(new FriendRequest("test", new FriendRequestDecisionHandler() {
@Override
public void handleDecision(String friendUsername, boolean accepted) {
}
}), org.limewire.friend.api.FriendRequestEvent.Type.REQUESTED));
}
*/
@Override
@SwingEDTEvent
public void handleEvent(FriendRequestEvent event) {
if (currentPanel == null) {
currentPanel = friendRequestNotifiactionPanelProvider.get();
// component hidden event comes in to tell us we can show more
// warnings.
currentPanel.addComponentListener(FriendRequestNotificationController.this);
}
currentPanel.addRequest(event.getData());
}
});
}
@Override
public void componentHidden(ComponentEvent e) {
currentPanel.dispose();
currentPanel = null;
}
}