package client;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionListener;
import java.util.Iterator;
import network.Host;
import util.Constants;
import util.Globals;
public class Menu
{
PopupMenu popupMenu = new PopupMenu("Actions");
MenuItem menuItemMensaje = new MenuItem(Constants.MENU_ACTION_SEND_TEXT_MSG);
MenuItem menuItemImage = new MenuItem(Constants.MENU_ACTION_SEND_IMAGE_MSG);
MenuItem menuItemSalir = new MenuItem(Constants.MENU_ACTION_EXIT_APP_MSG);
PopupMenu messagePopupMenu = new PopupMenu("Enviar mensaje a...");
PopupMenu imagePopupMenu = new PopupMenu("Enviar imagen a...");
PopupMenu statusPopupMenu = new PopupMenu("Mi estado...");
MenuItem onlineItemMensaje = new MenuItem(Constants.MENU_ACTION_SET_ONLINE_MSG);
MenuItem offlineItemMensaje = new MenuItem(Constants.MENU_ACTION_SET_OFFLINE_MSG);
ActionListener listener = null;
/**
* Popup menu principal del tray-icon
* @param listener
* @return
*/
public PopupMenu createPopupMenu(ActionListener aListener)
{
listener = aListener;
//Create the popup menu and add some menu item to it
menuItemMensaje.setActionCommand(Constants.MENU_ACTION_SEND_TEXT_CMD);
menuItemMensaje.addActionListener(listener);
menuItemImage.setActionCommand(Constants.MENU_ACTION_SEND_IMAGE_CMD);
menuItemImage.addActionListener(listener);
menuItemSalir.setActionCommand(Constants.MENU_ACTION_EXIT_APP_CMD);
menuItemSalir.addActionListener(listener);
generateHostsSubMenu(messagePopupMenu, Constants.MENU_ACTION_SEND_FAST_TEXT_CMD, listener);
generateHostsSubMenu(imagePopupMenu, Constants.MENU_ACTION_SEND_FAST_IMAGE_CMD, listener);
onlineItemMensaje.setActionCommand(Constants.MENU_ACTION_SET_ONLINE_CMD);
onlineItemMensaje.addActionListener(listener);
statusPopupMenu.add(onlineItemMensaje);
offlineItemMensaje.setActionCommand(Constants.MENU_ACTION_SET_OFFLINE_CMD);
offlineItemMensaje.addActionListener(listener);
statusPopupMenu.add(offlineItemMensaje);
//Add the menu item to the popup menu
// popupMenu.add(menuItemLanSearch); esto ya no es necesario
// popupMenu.addSeparator();
popupMenu.add(menuItemMensaje);
popupMenu.add(messagePopupMenu);
popupMenu.addSeparator();
popupMenu.add(menuItemImage);
popupMenu.add(imagePopupMenu);
popupMenu.addSeparator();
popupMenu.add(statusPopupMenu);
popupMenu.addSeparator();
popupMenu.add(menuItemSalir);
return popupMenu;
}
/**
* Genera una entrada por host existente en el pop-up menu a fin de enviar mensajes/imagenes rapidos
* @param popupMenu
* @param action
* @param listener
*/
private void generateHostsSubMenu(PopupMenu popupMenu, String action, ActionListener listener)
{
Iterator<Host> it = Globals.hosts.iterator();
while (it.hasNext())
{
Host host = it.next();
if (!host.isConnected())
continue;
MenuItem menuItemMensaje = new MenuItem(host.getHostName());
menuItemMensaje.setActionCommand(action);
menuItemMensaje.addActionListener(listener);
popupMenu.add(menuItemMensaje);
}
}
/**
* Recarga el contenido del popupmenu según los hosts online
*/
public void updatePopupSubMenu()
{
messagePopupMenu.removeAll();
generateHostsSubMenu(messagePopupMenu, Constants.MENU_ACTION_SEND_FAST_TEXT_CMD, listener);
imagePopupMenu.removeAll();
generateHostsSubMenu(imagePopupMenu, Constants.MENU_ACTION_SEND_FAST_IMAGE_CMD, listener);
}
}