kramann.info
© Guido Kramann

Login: Passwort:










2.6 JabeS.java - Test 006, Ordner w006

Taufe

  • Das Gesamtsystem wurde nun JabeS getauft.
  • JabeS steht für "Java based educational System"
  • Ein entsprechendes Logo wurde entwickelt:

Fenstergröße

  • Die Fenstergröße sollte sich nun automatisch an die Bildschirmgröße anpassen.
Eine Logo-Variante zu JabeS.

Bild 2.6-1: Eine Logo-Variante zu JabeS.

Erweiterung der Funktionalität der Elemente

  • Um aufgrund der gescannten Elemente auch ein Auswahlmenü erzeugen zu können, muß die Bereitstellung der Elemente-Objekte wieder aus der Klasse Pan herausgelöst und in eine eigene Klasse gebracht werden, da das Menü in der Klasse Wedi erstellt wird und demzufolge die Element-Objekte auch dort zur Verfügung stehen müssen.
  • Diese Klasse heißt elemente/ElementeLoader.
  • In ihr müssen nun nötigenfalls im Applet-Betrieb zwei Dummy-Methoden aus der Klasse hilfsklassen/Dateioperationen aktiviert werden.
  • Die Unterordner im Verzeichnis elemente sollen sich als Menüpunkte in der Menüleiste wiederspiegeln.
  • In den einzelnen Menüs soll es dann für jede Elemente-Klasse einen Eintrag gleichen Namens geben.
  • Bei Auswahl eines Elements wird an die aktuelle Curser-Position links der Element-Befehl gefolgt von einem einfachen Parameterbeispiel eingetragen.
  • Auf diese Weise wird es einfacher die Codierung zu erlernen.
  • Weitere Menüs werden in eigenen Klassen im Package gui beschrieben werden, wie hier zunächst das Hilfe-Menü durch die Klasse HilfeMenue.
  • Um die Möglichkeit komplexere Objekte, wie Applets, einfügen zu können aufzuzeigen, wurden die Elemente um ein Grafik-Element elemente/grafik/baum1 ergänzt.
  • Dieses ist aber zur Zeit nur ein Platzhalter mit eingeschränkter Funktionalität für das noch zu entwickelnde Element.
  • Im folgenden ist nur die neu hinzugekommene Klasse gui/Menue als Quelltext dargestellt.
  • Nach und nach werden auch kleine Hilfsmethoden in die Basisklasse Element eingepflegt (setzeGroesse(Component komponente,int hoehe), generiereBefehl()), die das Erstellen neuer Elemente eindeutiger und einfacher machen.


w006.zip - Download des hier besprochenen Programms mit Quelltexten.
package gui;

 /**
 *  <h4>Menue.java  - Klasse Java based educational System jabes.</h4>
 *  <br/>
 *  Copyright (C) 2011 Guido Kramann<br/>
 *  kramann@fh-brandenburg.de<br/>
 *  http://www.kramann.info<br/>
 *  <br/>
 *  <p>  
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  </p>
 *  <p>
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  </p>
 *  <p>
 *  You should have received a copy of the GNU General Public License
 *  along with this program (gpl.html).  If not, see http://www.gnu.org/licenses/.
 *  </p>
 */

import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


import hilfsklassen.Dateioperationen;
import jabes.JabeS;
import elemente.ElementeLoader;
import gui.HilfeMenue;

public class Menue extends JMenuBar
{
    private JabeS jabes;

    /**Die Menue-Funktionen sollen auf alles Zugriff haben, deshalb bekommen sie
    eine Instanz des Wysiwyg-Editors.
    */
    public Menue(JabeS jabes)
    {
        this.jabes = jabes;

        for(int i=0;i<ElementeLoader.alleElementeUnterordner.length;i++)
        {
            JMenu men = new JMenu(ElementeLoader.alleElementeUnterordner[i]);
            men.setName(ElementeLoader.alleElementeUnterordner[i]);
            this.add(men);
        }
        //Items durchgehen und an der richtigen Stelle einhängen:
        for(int i=0;i<ElementeLoader.alleElementKlassennamen.length;i++)
        {
            //Unterordnername extrahieren:
            String unterordner = Dateioperationen.extrahiereEndung(   
                                     Dateioperationen.entferneEndung(
                                     ElementeLoader.alleElementKlassennamen[i]
                                                                    )
                                                                  );
            System.out.println("Menuepunkt:"+ElementeLoader.alleNamenOhnePackagepfad[i]
                              +" Ordner:"+ unterordner
                              );
            JMenuItem eintrag = new JMenuItem(ElementeLoader.alleNamenOhnePackagepfad[i]);
            eintrag.addActionListener(new MenueLauscher(ElementeLoader.objekte[i].getBeispiel())); 
            //Passendes Menue finden:
            for(int k=0;k<this.getMenuCount();k++)
            {
                JMenu men = this.getMenu(k); 
                String menname = men.getName();
                if(menname.equals(unterordner))
                {
                    men.add(eintrag);
                    break;
                }
            }           
        }

        this.add(new HilfeMenue());
    }

    private class MenueLauscher implements ActionListener
    {
        private String beispiel = "";
        public MenueLauscher(String beispiel)
        {
            this.beispiel=beispiel+"
";
        }
        public void actionPerformed(ActionEvent e) 
        {
            //Beispieltext an die aktuelle Curser-Position des linken Fensters von jabes
            //einfügen:
            String zusatz = "";
            String text = jabes.textlinks.getText();
            int pos = jabes.textlinks.getCaretPosition();
            if(pos>0 && text!=null && text.length()>1 && text.charAt(pos-1)!='
')
                zusatz="
";
            jabes.textlinks.insert(zusatz+beispiel,pos);
            jabes.textlinks.repaint();
        }
    }
}

Code 2.6-1: gui/Menue.java - Test 006, Ordner w006