package de.unisiegen.gtitool.ui.popup; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import de.unisiegen.gtitool.core.entities.Alphabet; import de.unisiegen.gtitool.core.entities.Transition; import de.unisiegen.gtitool.core.preferences.listener.LanguageChangedListener; import de.unisiegen.gtitool.ui.i18n.Messages; import de.unisiegen.gtitool.ui.jgraph.DefaultTransitionView; import de.unisiegen.gtitool.ui.logic.TransitionDialog; import de.unisiegen.gtitool.ui.netbeans.MachinePanelForm; import de.unisiegen.gtitool.ui.preferences.PreferenceManager; /** * A Popup Menu for {@link Transition}s * * @author Benjamin Mies * @version $Id$ */ public final class TransitionPopupMenu extends JPopupMenu { /** * The serial version uid. */ private static final long serialVersionUID = 3541518527653662496L; /** * The {@link MachinePanelForm}. */ protected MachinePanelForm parent; /** * The {@link Alphabet}. */ protected Alphabet alphabet; /** * The push down {@link Alphabet}. */ protected Alphabet pushDownAlphabet; /** * The {@link DefaultTransitionView}. */ protected DefaultTransitionView transition; /** * The delete item. */ protected JMenuItem delete; /** * The configure item. */ private JMenuItem config; /** * Allocates a new {@link StatePopupMenu}. * * @param parent The parent panel. * @param transition the transition to open the popup menu. * @param alphabet The {@link Alphabet}. * @param pushDownAlphabet The push down {@link Alphabet}. */ public TransitionPopupMenu ( MachinePanelForm parent, DefaultTransitionView transition, Alphabet alphabet, Alphabet pushDownAlphabet ) { this.parent = parent; this.alphabet = alphabet; this.pushDownAlphabet = pushDownAlphabet; this.transition = transition; populateMenues (); /* * Language changed listener */ PreferenceManager.getInstance ().addLanguageChangedListener ( new LanguageChangedListener () { public void languageChanged () { TransitionPopupMenu.this.delete.setText ( Messages .getString ( "MachinePanel.Delete" ) ); //$NON-NLS-1$ } } ); } /** * Populates the menues of this popup menu. */ private final void populateMenues () { this.delete = new JMenuItem ( Messages.getString ( "MachinePanel.Delete" ) ); //$NON-NLS-1$ this.delete.setIcon ( new ImageIcon ( getClass ().getResource ( "/de/unisiegen/gtitool/ui/icon/small/delete.png" ) ) ); //$NON-NLS-1$ this.delete.addActionListener ( new ActionListener () { public void actionPerformed ( @SuppressWarnings ( "unused" ) ActionEvent event ) { TransitionPopupMenu.this.parent.getLogic ().deleteTransition ( TransitionPopupMenu.this.transition ); } } ); add ( this.delete ); this.config = new JMenuItem ( Messages .getString ( "MachinePanel.Properties" ) ); //$NON-NLS-1$ this.config.setIcon ( new ImageIcon ( getClass ().getResource ( "/de/unisiegen/gtitool/ui/icon/small/rename.png" ) ) ); //$NON-NLS-1$ this.config.addActionListener ( new ActionListener () { public void actionPerformed ( @SuppressWarnings ( "unused" ) ActionEvent event ) { JFrame window = ( JFrame ) SwingUtilities .getWindowAncestor ( TransitionPopupMenu.this.parent ); TransitionDialog transitionDialog = new TransitionDialog ( window, TransitionPopupMenu.this.parent.getLogic (), TransitionPopupMenu.this.alphabet, TransitionPopupMenu.this.pushDownAlphabet, TransitionPopupMenu.this.transition.getTransition () ); transitionDialog.show (); TransitionPopupMenu.this.parent.getLogic ().performCellsChanged (); } } ); add ( this.config ); } }