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.