/**
 * @(#) gTextField.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.StringDoc;
import org.app.documents.AbstractSharedDoc;
import javax.swing.text.PlainDocument;
import org.app.mvc.MvcModell;

import org.app.gui.factory.GuiFactory;

/**
 * description:
 * gui TextField Klasse , abgeleitet von javax.swing.JList mit Interface MvcObserver
 *
 * @version     1.0  19.07.01
 * @author      Thomas Schmidt, Michael Wilhelem
 * @see         #app.gui.gTextFieldInt
 * @see         #app.gui.gTextFieldDouble
 * @see         #app.gui.gTextFieldLong
 * @see         #app.gui.gTextField0 Organisation:  FH Magdeburg
 */

public class gTextField extends gTextField0 {
    /**
     * Constructor
     * @return none
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see
     */
    public gTextField() {
        setText("x");
    }

    /**
     * Constructor
     * @return none
     * @param Modell modell, AbstractSharedDoc Daten1Obj
     * @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 gTextField(MvcModell modell, String szDokId) {
        _modell = modell;
        AbstractSharedDoc Daten1Obj = _modell.GetModellData(szDokId);

        StringDoc Obj = (StringDoc) Daten1Obj;
        setUpdateModus(true);
        setViewNr(gViewer0.getViewerNr());
        //Debug.print("GUI", Debug.INFO,  "JTextFieldLong: getViewNr():" +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 DobleTextDocument, damit eine immer eine gültige Zahl im Feld eingetragen ist.
     */
    protected Document createDefaultModel() {
        PlainDocument doc = new PlainDocument();
        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 StringDoc(getValue()));
            // set modify
        }
    }

    /**
     * getValue
     * @return double Wert des textFields
     * @param none
     * @exception
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #isValid
     */
    public String getValue() {
        //Debug.print("GUI", Debug.INFO,  "getValue  in JtextFieldLong  _id: " + _id+ "  Inhalt: "+super.getText() );
        return (super.getText());
    } // getValue

    /**
     * isValid
     * @return boolean true
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see
     */
    public boolean isValid() {
        return true;
    }
}
