package app.view;

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

/**
 * MenyLinje.java
 *
 * En klasse for å forenkle måten jeg lager Menyer på.
 *
 * @author Hilde Vestøl (106288)
 * @version 0.9
 */

public class MenyLinje extends JMenuBar {
    private ActionListener lytter;

    /**
     *
     * @param lytter
     */

    protected MenyLinje (ActionListener lytter) {
        super();
        this.lytter = lytter;
    }
    
    /**
     *
     * @param navn
     * @param key
     * @return
     */

    protected Meny lagNyMeny( String navn, int key ) {
        Meny meny = new Meny( navn );
        meny.setMnemonic(key);
        this.add( meny );
        return meny;
    }
    
    /**
     * Metode for å finne et menyfelt basert på ActionCommand.
     * Brukes for å kunne sette elemter disabled/enabled
     *
     * @param command
     * @return
     */

    public JMenuItem finnMenyValg(String command) {
        JMenuItem item;
        for (MenuElement meny: this.getSubElements()) {
            JMenu tmp = (JMenu)meny;
            
            JMenuItem tmpItem;
            for (int i = 0; i<tmp.getItemCount(); i++){
                tmpItem = tmp.getItem(i);
                if (tmpItem.getActionCommand().equals(command)){
                    return tmpItem;
                }
            }
            
        }
        
        return null;
    }
    
    /**
     *
     */

    protected class Meny extends JMenu {
        /**
         *
         * @param navn
         */

        protected Meny (String navn) {
            super(navn);
        }
        
        /**
         *
         * @param navn
         * @param command
         * @param key
         * @return
         */

        protected Meny lagNyttMenyValg( String navn, String command, int key ) {
            MenyValg valg = new MenyValg( navn, command, key);
            this.add(valg);
            return this;
        }
        
        /**
         *
         * @param navn
         * @param command
         * @return
         */

        protected Meny lagNyttMenyValg( String navn, String command) {
            MenyValg valg = new MenyValg( navn, command);
            this.add(valg);
            return this;
    }
    } // end class Meny
    

    /**
     *
     */

    protected class MenyValg extends JMenuItem {    
        // Bruker getMenuShortcutKeyMask() for å sette OS'et sin command key.
    private int defaultCommand = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
                
        /**
         *
         * @param navn
         * @param command
         * @param key
         */

        protected MenyValg( String navn, String command, int key ) {
            super(navn);
            setActionCommand(command);
            setAccelerator(KeyStroke.getKeyStroke(key, defaultCommand));
            addActionListener(lytter);
    }
        
        /**
         *
         * @param navn
         * @param command
         */

        protected MenyValg(String navn, String command) {
            super(navn);
            setActionCommand(command);
            addActionListener(lytter);
    }
        
    } // end class MenyValg
    
} // end class MenyLinje

Kontaktinfo

Hilde Vestøl
98883064
hilde@vestol.net

kart