package org.limewire.ui.swing.menu;
import java.awt.event.ActionEvent;
import java.util.Random;
import org.limewire.core.api.Application;
import org.limewire.ui.swing.action.AbstractAction;
import org.limewire.ui.swing.action.DelayedMenuItemCreator;
import org.limewire.ui.swing.action.MnemonicMenu;
import org.limewire.ui.swing.action.UrlAction;
import org.limewire.ui.swing.mainframe.AboutAction;
import org.limewire.ui.swing.tray.Notification;
import org.limewire.ui.swing.tray.TrayNotifier;
import org.limewire.ui.swing.util.I18n;
import org.limewire.util.OSUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
class HelpMenu extends MnemonicMenu implements DelayedMenuItemCreator {
private final Application application;
private final Provider<TrayNotifier> trayNotifierProvider;
private final Provider<AboutAction> aboutAction;
@Inject
public HelpMenu(Application application,
Provider<TrayNotifier> trayNotifierProvider,
Provider<AboutAction> aboutAction) {
super(I18n.tr("&Help"));
this.application = application;
this.trayNotifierProvider = trayNotifierProvider;
this.aboutAction = aboutAction;
}
@Override
public void createMenuItems() {
add(new UrlAction(I18n.tr("&Forum"), "http://www.gnutellaforums.com/"));
if (!OSUtils.isMacOSX())
add(aboutAction.get());
if (application.isTestingVersion()) {
addSeparator();
add(new AbstractAction("Error Test") {
@Override
public void actionPerformed(ActionEvent e) {
throw new RuntimeException("Test Error");
}
});
add(new AbstractAction("Tray Test") {
@Override
public void actionPerformed(ActionEvent e) {
if (new Random().nextBoolean()) {
Notification notification = new Notification("This is a not tooo long message title",
"This is a super looooooooooooooooooooooooooooooooong message.",
this);
trayNotifierProvider.get().showMessage(notification);
} else if (new Random().nextBoolean()) {
Notification notification = new Notification("Long super loooooooooooooong loooon loooong message title",
"This is a another very loooong loooong loooong loooong loooong loooong loooong loooong loooong message.",
this);
trayNotifierProvider.get().showMessage(notification);
} else {
Notification notification = new Notification("Short Title", "Short message.", this);
trayNotifierProvider.get().showMessage(notification);
}
}
});
}
}
}