package org.peerbox.view.tray; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.event.ActionListener; import org.peerbox.presenter.tray.TrayActionHandler; final class JTrayMenu { private PopupMenu root; private TrayActionHandler actionHandler; public JTrayMenu(TrayActionHandler actionHandler) { this.actionHandler = actionHandler; } public PopupMenu create(boolean isUserLoggedIn) { root = new PopupMenu(); if (isUserLoggedIn) { root.add(createRootFolderMenu()); // root.add(createRecentFilesMenu()); // TODO: implement additional feature. root.addSeparator(); root.add(createSettingsMenu()); root.addSeparator(); } root.add(createActivityMenu()); root.add(createQuitMenu()); return root; } private MenuItem createRootFolderMenu() { MenuItem rootItem = new MenuItem("Open Folder"); rootItem.addActionListener(createRootFolderListener()); return rootItem; } private ActionListener createRootFolderListener() { ActionListener closeListener = new ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent event) { actionHandler.openRootFolder(); } }; return closeListener; } private MenuItem createSettingsMenu() { MenuItem settingsItem = new MenuItem("Settings"); settingsItem.addActionListener(createSettingsListener()); return settingsItem; } public ActionListener createSettingsListener() { ActionListener settingsListener = new ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { actionHandler.showSettings(); } }; return settingsListener; } private MenuItem createActivityMenu() { MenuItem activityItem = new MenuItem("Activity"); activityItem.addActionListener(createActivityListener()); return activityItem; } private ActionListener createActivityListener() { ActionListener activityListener = new ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { actionHandler.showActivity(); } }; return activityListener; } private MenuItem createQuitMenu() { MenuItem closeItem = new MenuItem("Quit"); closeItem.addActionListener(createQuitListener()); return closeItem; } private ActionListener createQuitListener() { ActionListener closeListener = new ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { actionHandler.quit(); } }; return closeListener; } }