package com.google.code.joto.testapp;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.code.joto.util.ui.GridBagLayoutFormBuilder;
import com.google.code.joto.util.ui.JButtonUtils;
/**
*
*/
public class FooPanel {
private static Logger log = LoggerFactory.getLogger(FooPanel.class);
private IFooService fooService;
private JPanel panel;
private JTextField int1TextField;
private JTextField int2TextField;
private JTextField double1TextField;
private JTextField double2TextField;
private JTextField dateTextField;
// ------------------------------------------------------------------------
public FooPanel(IFooService fooService) {
this.fooService = fooService;
initComponents();
}
private void initComponents() {
panel = new JPanel(new GridBagLayout());
GridBagLayoutFormBuilder b = new GridBagLayoutFormBuilder(panel);
b.addLabelComp("foo()", JButtonUtils.snew("execute", this, "onButtonFoo"));
int1TextField = new JFormattedTextField(NumberFormat.getIntegerInstance());
b.addLabelComp("int 1", int1TextField);
int2TextField = new JFormattedTextField(NumberFormat.getIntegerInstance());
b.addLabelComp("int 2", int2TextField);
b.addLabelComp("methInt()", JButtonUtils.snew("execute", this, "onButtonMethInt"));
double1TextField = new JFormattedTextField(NumberFormat.getNumberInstance());
b.addLabelComp("double 1", double1TextField);
double2TextField = new JFormattedTextField(NumberFormat.getNumberInstance());
b.addLabelComp("double 2", double2TextField);
b.addLabelComp("methDouble()", JButtonUtils.snew("execute", this, "onButtonMethDouble"));
dateTextField = new JFormattedTextField(new SimpleDateFormat("yyyy/MM/dd"));
b.addLabelComp("date", dateTextField);
b.addLabelComp("methDate()", JButtonUtils.snew("execute", this, "onButtonMethDate"));
b.addLabelComp("methObj()", JButtonUtils.snew("execute", this, "onButtonMethObj"));
setDefaultValues();
}
// ------------------------------------------------------------------------
public JComponent getJComponent() {
return panel;
}
public void setDefaultValues() {
int1TextField.setText("12");
int2TextField.setText("45");
double1TextField.setText("123.456");
double2TextField.setText("45.6789");
dateTextField.setText("2011/12/25");
}
/** called by introspection, for GUI callback */
public void onButtonFoo(ActionEvent event) {
fooService.foo();
}
/** called by introspection, for GUI callback */
public void onButtonMethInt(ActionEvent event) {
int arg1;
int arg2;
try {
arg1 = Integer.parseInt(int1TextField.getText());
arg2 = Integer.parseInt(int2TextField.getText());
} catch(NumberFormatException ex) {
log.error("Bad number format .. do nothing! ex:" + ex.getMessage());
return;
}
fooService.methInt(arg1, arg2);
}
/** called by introspection, for GUI callback */
public void onButtonMethDouble(ActionEvent event) {
double arg1;
double arg2;
try {
arg1 = Double.parseDouble(double1TextField.getText());
} catch(NumberFormatException ex) {
log.error("Bad number format .. use arg1=0 !!! " + ex.getMessage());
arg1 = 0;
}
try {
arg2 = Double.parseDouble(double2TextField.getText());
} catch(NumberFormatException ex) {
log.error("Bad number format .. use arg2=0 !!! " + ex.getMessage());
arg2 = 0;
}
fooService.methDouble(arg1, arg2);
}
/** called by introspection, for GUI callback */
public void onButtonMethDate(ActionEvent event) {
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date arg1;
try {
arg1 = sdf.parse(dateTextField.getText());
} catch (ParseException ex) {
log.error("Bad date format (expecting yyyy/MM/dd).. use arg1=null !!! " + ex.getMessage());
arg1 = null;
}
int arg2 = Integer.parseInt(int1TextField.getText());
fooService.methDate(arg1, arg2);
}
/** called by introspection, for GUI callback */
public void onButtonMethObj(ActionEvent event) {
List<Object> obj = new ArrayList<Object>();
obj.add("testString");
fooService.methObj(obj);
}
}