package org.vorthmann.zome.ui;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.BevelBorder;
import org.vorthmann.ui.Controller;
public class NumberPanel extends JPanel
{
private final JTextArea[] fields;
private final Controller controller;
public NumberPanel( Controller controller )
{
super();
this.controller = controller;
this .setLayout( new BoxLayout( this, BoxLayout.LINE_AXIS ) );
this .setBorder( BorderFactory .createEmptyBorder( 4, 4, 4, 4 ) );
// TODO : add text fields
String[] labels = controller .getCommandList( "labels" );
String[] values = controller .getCommandList( "values" );
fields = new JTextArea[ values .length ];
JLabel label = new JLabel( "( " );
Font biggerFont = label .getFont() .deriveFont( 14f );
Font biggestFont = label .getFont() .deriveFont( 20f );
Dimension maxSize = new Dimension( 40, 20 );
for ( int i = 0; i < values.length; i++ )
{
if ( i == 0 )
label = new JLabel( "( " );
else if ( i == 1 )
label = new JLabel( " + " );
else if ( i == values.length - 1 )
label = new JLabel( labels[ i-1 ] + " ) / " );
else
label = new JLabel( labels[ i-1 ] + " + " );
label .setFont( biggestFont );
this .add( label );
fields[ i ] = new JTextArea( values[ i ] );
fields[ i ] .setBorder( BorderFactory .createBevelBorder( BevelBorder .LOWERED ) );
fields[ i ] .setFont( biggerFont );
fields[ i ] .setMaximumSize( maxSize );
fields[ i ] .setPreferredSize( maxSize );
this .add( fields[ i ] );
}
}
public void syncFromModel()
{
String[] values = controller .getCommandList( "values" );
for ( int i = 0; i < values.length; i++ )
fields[ i ] .setText( values[ i ] );
}
public void syncToModel()
{
StringBuffer buf = new StringBuffer();
for ( int i = 0; i < fields.length; i++ ) {
buf .append( fields[ i ] .getText() );
buf .append( " " );
}
controller .setProperty( "values", buf .toString() );
}
}