Package fmg.fmg8.graphVis.fensterDialoge

Source Code of fmg.fmg8.graphVis.fensterDialoge.AllgemeinerDialog

/*
* Datei: AllgemeinerDialog.java
* Autor(en):        Lukas K�nig
* Java-Version:     1.4
* Erstellt (vor): 26.06.2007
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.graphVis.fensterDialoge;

import fmg.fmg8.graphVis.MultiLineLabel;
import fmg.fmg8.umgebung2D.Vektor2D;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextComponent;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;


/**
* Implementierung eines allgemeinen Dialogs.
*
* @author Lukas K�nig
*/
public class AllgemeinerDialog extends Dialog implements ActionListener {
   
    /**
     * Die Serial-Version-ID vom 28. April 2007
     */
    private static final long serialVersionUID = 2504188077455833733L;

    /**
     * Das gew�hlte Element.
     */
    private String result;

    /**
     * Die Textbox deren Wert zum Zeitpunkt des Klicks auf einen Button zur�ck-
     * gegeben wird.
     */
    private TextComponent text;

    /**
     * Eine Liste.
     */
    private java.awt.List liste;
   
    /**
     * Zus�tzliche Textbox deren Wert zum Zeitpunkt des Klicks auf einen
     * Button zur�ckgegeben wird, falls sie angefordert war.
     */
    private TextComponent zusatzText;
   
    /**
     * Der Konstruktor.
     *
     * @param owner          Das Vaterfenster.
     * @param msg            Anzuzeigende Nachricht.
     * @param titel          Der Titel des Fensters.
     * @param buttons        Liste von Strings, die von den anzuzeigenden
     *                       Buttons dargestellt werden.
     * @param textBox        In einer Textbox darzustellender String.
     * @param textBoxHeight  H�he der Textbox in ZEILEN!
     * @param textBoxWidth   Breite der Textbox in ZEICHEN!.
     * @param einzeilig      Ob die Textbox einzeilig ist.
     */
    public AllgemeinerDialog(final Frame             owner,
                             final String            msg,
                             final String            titel,
                             final ArrayList<String> buttons,
                             final String            textBox,
                             final int               textBoxHeight,
                             final int               textBoxWidth,
                             final boolean           einzeilig) {
        super(owner, titel, true);

        final int locationX = 200;
        final int locationY = 200;
        final int borderX = 4;
        final int borderY = 4;
        final int lrMargin = 20;
        final int tbMargin = 10;
        Iterator<String> it;
        Button butt;

        this.result = "";
        this.zusatzText = null;

        this.setAlwaysOnTop(true);
       
        //Fenster
        this.setLayout(new BorderLayout(borderX, borderY));
        this.setResizable(false);
        this.setLocation(locationX, locationY);
        //Message
        if (textBox == null) {
            MultiLineLabel lab = new MultiLineLabel(msg);
            lab.setLeftRightMargin(lrMargin);
            lab.setTopBottomMargin(tbMargin);
            this.add(lab, BorderLayout.CENTER);
        } else {
            if (einzeilig) {
                this.text = new TextField(textBox,
                                     textBoxWidth);
                this.text.setSelectionStart(0);
                this.text.setSelectionEnd(Integer.MAX_VALUE);
            } else {
                this.text = new TextArea(textBox,
                                         textBoxHeight,
                                         textBoxWidth);
            }
            this.add(this.text, BorderLayout.CENTER);
        }
        //Buttons
        Panel panel = new Panel();
        panel.setLayout(new FlowLayout(FlowLayout.CENTER));

        it = buttons.iterator();
        while (it.hasNext()) {
            butt = new Button(it.next());
            butt.addActionListener(this);
            panel.add(butt);
        }
        this.add(panel, BorderLayout.SOUTH);
        this.pack();
    }

    /**
     * Erzeugt einen Dialog basierend auf einer Liste.
     *
     * @param owner           Elternfenster.
     * @param title           Der Titel des Fensters.
     * @param message         Anzuzeigende Nachricht.
     * @param elemente        Die Listenelemente.
     * @param button1         Ein Button.
     * @param button2         Ein Button.
     * @param multi           Ob Mehrfachselektion m�glich ist.
     * @param zusatzTextFeld  Ob ein zus�tzliches Textfeld angezeigt werden
     *                        soll (>= 0) oder nicht (< 0). Gleichzeitig die
     *                        Voreinstellung des Textfeldes.
     */
    public AllgemeinerDialog(final Frame owner,               
                             final String title,
                             final String message,
                             final java.util.List<String> elemente,
                             final String button1,
                             final String button2,
                             final boolean multi,
                             final int zusatzTextFeld) {
        super(owner, title, true);
 
        this.setAlwaysOnTop(true);

        if (zusatzTextFeld >= 0) {
            this.zusatzText = new TextField();
            this.zusatzText.setText("" + zusatzTextFeld);
        } else {
            this.zusatzText = null;
        }
       
        this.result = "";
        this.liste = new java.awt.List(elemente.size(), multi);
        Button but1 = new Button(button1);
        Button but2 = new Button(button2);
        MultiLineLabel lab = new MultiLineLabel(message);

        this.setLayout(new GridLayout(2, 2));
        this.add(this.liste);
        if (this.zusatzText == null) {
            this.add(lab);
        } else {
            this.add(this.zusatzText);
            this.setTitle(this.getTitle() + " (" + message + ")");
        }
        lab.setLeftRightMargin(50);
       
        this.add(but1);
        this.add(but2);

        but1.addActionListener(this);
        but2.addActionListener(this);
       
        this.setBounds(100, 100, 500, 150);

        Iterator<String> it = elemente.iterator();
        while (it.hasNext()) {
            this.liste.add(it.next().toString());
        }
    }
   
    /**
     * Der Konstruktor.
     *
     * @param owner    Das Vaterfenster.
     * @param msg      Anzuzeigende Nachricht.
     * @param titel    Der Titel des Fensters.
     * @param buttons  Liste von Strings, die von den anzuzeigenden Buttons
     *                 dargestellt werden.
     * @param textBox  In einer Textbox darzustellender String.
     */
    public AllgemeinerDialog(final Frame owner,
                             final String msg,
                             final String titel,
                             final ArrayList<String> buttons,
                             final String textBox) {

        this(owner,
             msg,
             titel,
             buttons,
             textBox,
             20,
             100,
             false);
    }

    /**
     * F�ngt das Klicken auf einen Button ab.
     *
     * @param event  Das ausgel�ste Ereignis.
     */
    public void actionPerformed(final ActionEvent event) {
        this.result = event.getActionCommand();
        this.setVisible(false);
        this.dispose();
    }

    /**
     * Gibt die Wahl des Benutzers zur�ck.
     *
     * @return  Das Ergebnis des Benutzers.
     */
    public String getResult() {
        return this.result;
    }

    /**
     * Gibt den Text der Textbox zum Klickzeitpunkt zur�ck.
     *
     * @return  Text der Textbox zum Klickzeitpunkt.
     */
    public String getText() {
        return this.text.getText();
    }

    /**
     * Gibt den Text der Zusatztextbox zum Klickzeitpunkt zur�ck.
     *
     * @return  Text der Zusatztextbox zum Klickzeitpunkt.
     */
    public String getZusatzText() {
        if (this.zusatzText != null) {
            return this.zusatzText.getText();
        } else {
            return null;
        }
    }
   
    /**
     * @return Returns the liste.
     */
    public java.awt.List getListe() {
        return this.liste;
    }
   
    /**
     * Sets the position of the window.
     *
     * @param pos  Position vector.
     */
    public void setPosition(final Vektor2D pos) {
        this.setBounds((int) pos.x, (int) pos.y,
                       this.getWidth(), this.getHeight());
    }
   
    /**
     * Sets the size of the window.
     *
     * @param size  Size vector.
     */
    public void setSize(final Vektor2D size) {
        this.setBounds(this.getX(), this.getY(),
                       (int) size.x, (int) size.y);
    }
}
TOP

Related Classes of fmg.fmg8.graphVis.fensterDialoge.AllgemeinerDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.