package de.unisiegen.gtitool.ui.utils;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JMenuItem;
import de.unisiegen.gtitool.ui.logic.MainWindow;
/**
* An Subclass of JMenuItem with a linked File
*
* @author Benjamin Mies
*/
public final class RecentlyUsedMenuItem extends JMenuItem
{
/**
* The serial version uid.
*/
private static final long serialVersionUID = -5681726447551310852L;
/**
* The {@link MainWindow}
*/
protected MainWindow mainWindow;
/**
* The File this RecentlyUsedItem is associated with
*/
protected File file;
/**
* Allocate a new {@link RecentlyUsedMenuItem}.
*
* @param mainWindow The {@link MainWindow}
* @param file The File this RecentlyUsedItem is associated with
*/
public RecentlyUsedMenuItem ( MainWindow mainWindow, File file )
{
this.mainWindow = mainWindow;
this.file = file;
setText ( this.file.getName () );
setText ( this.file.getName () );
addActionListener ( new ActionListener ()
{
public void actionPerformed (
@SuppressWarnings ( "unused" ) ActionEvent event )
{
RecentlyUsedMenuItem.this.mainWindow.openFile (
RecentlyUsedMenuItem.this.file, true );
}
} );
}
/**
* {@inheritDoc}
*
* @see Object#equals(Object)
*/
@Override
public final boolean equals ( Object other )
{
if ( other instanceof RecentlyUsedMenuItem )
{
RecentlyUsedMenuItem item = ( RecentlyUsedMenuItem ) other;
return this.file.getAbsolutePath ().equals (
item.getFile ().getAbsolutePath () );
}
return false;
}
/**
* Getter for the {@link File}
*
* @return the file of this RecentlyUsedItem
*/
public final File getFile ()
{
return this.file;
}
/**
* {@inheritDoc}
*
* @see Object#hashCode()
*/
@Override
public final int hashCode ()
{
return this.file.hashCode ();
}
}