package jas2.swingstudio;
import jas2.util.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Frame;
import java.awt.Component;
import jas2.hist.*;

public abstract class RecentItemsMenu extends JMenu implements ActionListener
{
	public RecentItemsMenu(String lengthKey)
	{
		super();
		m_lengthKey = lengthKey;
	}
	public final void setEnabled(String[] lastItems)
	{
		m_lastItems = lastItems;
		m_build = lastItems != null && lastItems.length > 0;
		setEnabled(m_build);
	}
	final protected void fireMenuSelected()
	{
		if (m_build)
		{
			removeAll();
			AbstractMenuItem item;
			int i = 0;
			final int n = Math.min(m_prop.getInteger(m_lengthKey, 4), m_lastItems.length);
			while (i < n)
			{
				item = new AbstractMenuItem(toDisplayFormat(m_lastItems[i]), ++i);
				item.addActionListener(this);
				add(item);
			}
			m_build = false;
		}
		super.fireMenuSelected();
	}
	final public void actionPerformed(ActionEvent e)
	{
		Object o = e.getSource();
		if (o instanceof AbstractMenuItem)
		{
			AbstractMenuItem item = (AbstractMenuItem) o;
			itemSelected(item.name);
		}
	}
	protected abstract String toDisplayFormat(String s);
	protected abstract void itemSelected(String item);
	private class AbstractMenuItem extends JMenuItem
	{
		AbstractMenuItem(String name, int i)
		{
			super(String.valueOf(i) +" "+ name);
			this.name = name;
			setMnemonic('0' + (char) i);
		}
		String name;
	}
	private final UserProperties m_prop = JavaAnalysisStudio.getApp().getUserProperties();
	final private String m_lengthKey;
	private String[] m_lastItems;
	private boolean m_build = true; // indicates whether the menu should be built next time is is selected
}

 

Ads help maintain this website.