XgmTextArea.java :  » ERP-CRM-Financial » Evaristo-4.0 » com » m16e » tools » xgm » Java Open Source

Java Open Source » ERP CRM Financial » Evaristo 4.0 
Evaristo 4.0 » com » m16e » tools » xgm » XgmTextArea.java
/*
 * XgmTextArea.java
 */

package com.m16e.tools.xgm;

import com.m16e.tools.DataFactory;
import com.m16e.tools.MpToolsException;
import com.m16e.tools.Tools;
import com.m16e.tools.xgm.adapter.JTextAreaAdapter;
import com.m16e.tools.xml.XmlTreeNode;
import com.m16e.tools.xml.XmlTreeNodeable;
import java.awt.Component;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import org.apache.log4j.Logger;

///////////////////////////////////////////////////////////////
public class XgmTextArea 
extends XgmComponent
implements KeyListener
{
  public static final String TAG_TEXTAREA = "textarea";
  
  JScrollPane jsp = new JScrollPane();
  JTextAreaAdapter swingComponent = null;
  
  private String initialValue = "";
  
  int maxCols = 0;

  static Logger logger = Logger.getLogger( XgmTextArea.class );

  ///////////////////////////////////////////////////////////////
  public XgmTextArea() 
  {
    swingComponent = new JTextAreaAdapter( this );
  }
  
  ///////////////////////////////////////////////////////////////
  public XgmTextArea( XgmContainer container )
  {
    this();
    setXgmContainer( container );
  }

//  ///////////////////////////////////////////////////////////////
//  @Override
//  public void setEditable( boolean enable )
//  {
//    boolean layoutValue = true;
//    String aux = getXtnComponent().getAttribute( EDITABLE );
//    if( aux != null )
//      layoutValue = new Boolean( aux );
//    enable &= layoutValue;
//
//    super.setEditable( enable );
//    swingComponent.setEditable( enable );
//    swingComponent.setFocusable( enable );
//  }
//
  ///////////////////////////////////////////////////////////////
  public String getTagName()
  {
    return TAG_TEXTAREA;
  }

  ///////////////////////////////////////////////////////////////
  /**
   * Gets this component with the pertinent attributes as
   * a <code>java.util.List&gt;XMLTreeNodeable&lt;</code> 
   * instance with a single element or, if this is an empty list, it
   * means this component's value is null.
   */
  @Override
  public XmlTreeNodeable getXtnValueForResult() 
  throws XgmException
  {
    Object componentValue = getComponentValue();
    if( componentValue != null )
    {
      XmlTreeNode xtn = new XmlTreeNode( VALUE );
      try
      {
        xtn.setElementValue( 
          DataFactory.formatFromObject( 
            componentValue, DataFactory.DataType.CHAR, 0, null, true ) );
      }
      catch( MpToolsException e )
      {
        logger.error( e.getMessage(), e );
        throw new XgmException( XgmException.PARSE_ERROR, e.getMessage() );
      }
      return xtn;
    }
    return null;
  }

  ///////////////////////////////////////////////////////////////
  @Deprecated
  public String getXmlComponentValue( int indent )
  {
    String sIndent = Tools.getIndentString( indent );
    return sIndent + swingComponent.getText();
  }
  
  ///////////////////////////////////////////////////////////////
  public void setFromTreeNode( XmlTreeNodeable xtn ) 
  throws XgmException
  {
    super.setFromTreeNode( xtn );
    setComponentValueFromString( xtn.getElementValue() );
    String aux = xtn.getAttribute( COLS );
    if( aux != null )
      swingComponent.setColumns( Integer.parseInt( aux ) );
    aux = xtn.getAttribute( ROWS );
    if( aux != null )
      swingComponent.setRows( Integer.parseInt( aux ) );
    
    aux = xtn.getAttribute( MAX_COLS );
    if( aux!= null )
    {
      maxCols = Integer.parseInt( aux );
      swingComponent.addKeyListener( this );
    }
    
    swingComponent.setLineWrap( true );
    swingComponent.setWrapStyleWord( true );
    jsp.setViewportView( swingComponent );
    //jsp.setPreferredSize( new Dimension( 200, 100 ) );
    jsp.setVerticalScrollBarPolicy(
      ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    initialValue = swingComponent.getText();
    applyLayoutConstraints( xtn );
//    XgmNoLayoutPanelSettings xnlps = 
//      getXgmContainer().getNoLayoutPanelSettings();
//    if( xnlps != null )
//    {
//      jsp.setBounds( xnlps.getBounds( xtn ) );
//    }
    jsp.validate();
  }
  
  ///////////////////////////////////////////////////////////////
  public Object getComponentValue() 
  { 
    String s = null;
    if( swingComponent != null )
      s = swingComponent.getText();
    return s; 
  }
  
  ///////////////////////////////////////////////////////////////
  public JTextAreaAdapter getTextArea() { return swingComponent; }
  public Component getSwingComponent() { return jsp; }
  
  ///////////////////////////////////////////////////////////////
  public void setSwingComponent( Component component )
  {
    swingComponent = (JTextAreaAdapter) component;
    jsp.setViewportView( swingComponent );
  }
  
  ///////////////////////////////////////////////////////////////
  public boolean hasChanged()
  {
    String s = (String) getComponentValue();
    if( (initialValue == null && s.trim().length() == 0) ||
        s.equals( initialValue ) )
      return false;
    return true;
  }
  
  ////////////////////////////////////////////////////////////
  @Override
  public void resetChanged() 
  {
    initialValue = (String) getComponentValue();
  }

  ///////////////////////////////////////////////////////////////
  public void setComponentValueFromString( String value ) 
  {
    setComponentValueFromObject( value );
  }
  
  ///////////////////////////////////////////////////////////////
  public void setComponentValueFromObject( Object value ) 
  {
    if( value != null )
    {
      String s = value.toString();
      initialValue = s;
      swingComponent.setText( s );
    }
    else
    {
      initialValue = null;
      swingComponent.setText( "" );
    }
  }
  
  ///////////////////////////////////////////////////////////////
  public void changeComponentValueFromObject( Object value ) 
  {
    if( value != null )
    {
      String s = value.toString();
      swingComponent.setText( s );
    }
    else
    {
      swingComponent.setText( "" );
    }
  }
  
  ///////////////////////////////////////////////////////////////
  public void setMaxColumns( int maxColumns ) 
  { 
    this.maxCols = maxColumns; 
  }
  
  ///////////////////////////////////////////////////////////////
  // interface KeyListener: BEGIN
  ///////////////////////////////////////////////////////////////
  public void keyPressed( KeyEvent e ) {}
  
  ///////////////////////////////////////////////////////////////
  public void keyReleased( KeyEvent e ) 
  {
    String text = swingComponent.getText();
    int len = text.length();
    int keyCode = e.getKeyCode();
    if( maxCols > 0 )
    {
      if( len > maxCols )
      {
        JOptionPane.showMessageDialog(
          XgmFactory.getRootContainer( this ).getSwingComponent(),
            "Limite de colunas atingido para este campo (" +
            maxCols + ")" );
        text = text.substring( 0, maxCols );
        swingComponent.setText( text );
      }
    }
  }
  
  ///////////////////////////////////////////////////////////////
  public void keyTyped( KeyEvent e ) {}
  
  ///////////////////////////////////////////////////////////////
  // interface KeyListener: END
  ///////////////////////////////////////////////////////////////

  public String getInitialValue()
  {
    return initialValue;
  }

  public void setInitialValue(String initialValue)
  {
    this.initialValue = initialValue;
  }

  
}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.