/**
 * @(#) gTextFieldInt.java 19.07.01
 *
 * jfem - a java finite element system
 *
 * Copyright (C) 1999-2001 HS-MD
 * jfem.support@jfem.de
 * www.jfem.de
 *
 * For License information see License.txt
 */

package org.app.gui;

import javax.swing.text.Document;
import org.app.mvc.MvcModell;
import org.app.gui.gTextField0;
import org.app.documents.AbstractDoc;
import org.app.documents.IntDoc;
import org.app.documents.AbstractSharedDoc;

/**
 * description:
 * gui TextField Klasse , abgeleitet von javax.swing.JList mit Interface MvcObserver
 * Basis Klassse aller Textfelder für numerische Eingaben
 *
 * @version     1.0  19.07.01
 * @author      Thomas Schmidt, Michael Wilhelem
 * @see         #app.gui.gTextFieldDouble
 * @see         #app.gui.gTextField0
 * @see         #app.gui.gTextFieldLong
 * @see         #app.gui.gTextField Organisation:  FH Magdeburg
 */

public class gTextFieldInt extends gTextField0 {
    public gTextFieldInt() {
        setText("");
    }

    /**
     * Constructor
     * @return none
     * @param Modell modell, long ViewNr
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see setzt die ViewNr, zum Abgleich mit dem update des Controllers Das Modell wird nur als Parameter übergeben !
     * Es dient dazu, das DialogElement in den Listener einzutragen
     */
    public gTextFieldInt(MvcModell modell, String szDokId) {
        _modell = modell;
        AbstractSharedDoc Daten1Obj = _modell.GetModellData(szDokId);

        IntDoc Obj = (IntDoc)Daten1Obj;
        setUpdateModus(true);
        setViewNr(gViewer0.getViewerNr());
        //Debug.print("GUI", Debug.INFO,  getViewNr()  );
        setObject(Obj);
        setId(Obj.getId());
        modell.addObserver(this);
        _textfield.getDocument().addDocumentListener(this);
        setUpdateModus(false);
    } // create

    /**
     * Constructor für ein DefaultModel des DocumentenListerner
     * @return none
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see verwendet die Klasse IntTextDocument, damit eine immer eine gültige Zahl im Feld eingetragen ist.
     */
    protected Document createDefaultModel() {
        gIntTextDocument doc = new gIntTextDocument();
        doc.addDocumentListener(this);
        return doc;
    }
    //---------------------------------------------------------------------

    /**
     * change
     * @return none
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #insertUpdate
     * @see #removeUpdate
     * @see #changedUpdate wird von indertUpdate und removeUpdate aufgerufen
     */
    protected void change() {
        //Debug.print("GUI", Debug.INFO, "Change Aufgerufen");
        if (!getUpdateModus()) {
            //Debug.print("GUI", Debug.INFO, "setObject Aufgerufen");
            _modell.setModellData(getViewNr(), getId(), 0, new IntDoc(getValue()));
            // set modify
        }
    }

    /**
     * isValid
     * @return boolean Textfield ist eine gültige Double Zahl
     * @param none
     * @exception NumberFormatException
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #getValue
     */
    public boolean isValid() {
        try {
            // ein leerer String muss auch korrekt sein
            // da ein komplettes Löschen möglich sein muss
            // ev. auch ein komplettes Markieren mit
            String s = super.getText();
            if (s.compareTo("") == 0)
                return true;
            else
                Integer.parseInt(super.getText());
            return true;
        }
        catch (NumberFormatException e) {
            return false;
        }
    } // isValid

    /**
     * getValue
     * @return double Wert des textFields
     * @param none
     * @exception NumberFormatException
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #isValid
     */
    public int getValue() {
        //Debug.print("GUI", Debug.INFO,  "getValue  in JtextFieldInt  _id: " + _id+ "  Inhalt: "+super.getText() );
        try {
            String s = super.getText();
            if (s.compareTo("") == 0)
                return 0;
            else
                return Integer.parseInt(super.getText());
        }
        catch (NumberFormatException e) {
            return 0;
        }
    } // getValue
}
