package com.horstmann.violet.application.menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import com.horstmann.violet.application.gui.MainFrame;
import com.horstmann.violet.framework.injection.resources.ResourceBundleInjector;
import com.horstmann.violet.framework.injection.resources.annotation.ResourceBundleBean;
import com.horstmann.violet.workspace.IWorkspace;
@ResourceBundleBean(resourceReference = MenuFactory.class)
public class DocumentMenu extends JMenu
{
/**
* Default constructor
*
* @param mainFrame where is attached this menu
* @param factory for accessing to external resources
*/
@ResourceBundleBean(key = "document")
public DocumentMenu(final MainFrame mainFrame)
{
ResourceBundleInjector.getInjector().inject(this);
this.mainFrame = mainFrame;
List<IWorkspace> workspaceList = this.mainFrame.getWorkspaceList();
setEnabled(!workspaceList.isEmpty());
}
public void updateMenuItem() {
List<IWorkspace> workspaceList = this.mainFrame.getWorkspaceList();
setEnabled(!workspaceList.isEmpty());
IWorkspace activeWorkspace = this.mainFrame.getActiveWorkspace();
removeAll();
for (final IWorkspace aWorkspace : workspaceList) {
String title = aWorkspace.getTitle();
final JMenuItem menuItem = new JMenuItem(title);
add(menuItem);
menuItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
mainFrame.setActiveWorkspace(aWorkspace);
menuItem.setIcon(activeWorkspaceIcon);
}
});
if (aWorkspace.equals(activeWorkspace)) {
menuItem.setIcon(activeWorkspaceIcon);
}
}
}
/**
* Current editor frame
*/
private MainFrame mainFrame;
@ResourceBundleBean(key = "document.active.icon")
private ImageIcon activeWorkspaceIcon;
}