Revision 2524

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingManager.java
7 7
import java.awt.event.ActionListener;
8 8
import java.awt.image.BufferedImage;
9 9
import java.io.File;
10
import java.sql.Time;
11
import java.util.Calendar;
12
import java.util.Date;
10 13
import javax.swing.AbstractButton;
11 14
import javax.swing.ComboBoxModel;
12 15
import javax.swing.Icon;
13 16
import javax.swing.JButton;
14 17
import javax.swing.JComboBox;
15 18
import javax.swing.JComponent;
19
import javax.swing.JFormattedTextField;
16 20
import javax.swing.JLabel;
17 21
import javax.swing.JList;
18 22
import javax.swing.JSlider;
23
import javax.swing.JSpinner;
19 24
import javax.swing.JTabbedPane;
20 25
import javax.swing.JTable;
21 26
import javax.swing.JTree;
27
import javax.swing.SpinnerDateModel;
22 28
import javax.swing.table.TableModel;
23 29
import javax.swing.text.JTextComponent;
24 30
import javax.swing.tree.TreeModel;
......
298 304
    public String getFromClipboard();
299 305

  
300 306
    public boolean isClipboardEmpty();
301

  
307
    
308
    public JSpinner spinnerOfNumber(JSpinner spinner, Number value);
309
    
310
    public JSpinner spinnerOfNumber(JSpinner spinner, Class valueClass);
311
    
312
    public JSpinner spinnerOfIntegers(JSpinner spinner, Integer value, int minimum, int maximum, int stepSize);
313
    
314
    public JSpinner spinnerOfTime(JSpinner spinner);
315
    
316
    public JSpinner spinnerOfTime(JSpinner spinner, Time value);
302 317
}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/DefaultToolsSwingManager.java
14 14
import java.io.File;
15 15
import java.lang.reflect.InvocationTargetException;
16 16
import java.lang.reflect.Method;
17
import java.sql.Time;
17 18
import javax.swing.AbstractButton;
18 19
import javax.swing.ComboBoxModel;
19 20
import javax.swing.Icon;
......
25 26
import javax.swing.JList;
26 27
import javax.swing.JScrollPane;
27 28
import javax.swing.JSlider;
29
import javax.swing.JSpinner;
28 30
import javax.swing.JTabbedPane;
29 31
import javax.swing.JTable;
30 32
import javax.swing.JTree;
......
75 77
import org.gvsig.tools.swing.impl.bookmarkshistory.DefaultBookmarksController;
76 78
import org.gvsig.tools.swing.impl.bookmarkshistory.DefaultHistoryController;
77 79
import org.gvsig.tools.swing.impl.pickercontroller.DataTypePickerControllerImpl;
80
import org.gvsig.tools.swing.impl.pickercontroller.nullablespinner.NullableSpinnerUtils;
78 81

  
79 82
@SuppressWarnings("UseSpecificCatch")
80 83
public class DefaultToolsSwingManager implements ToolsSwingManager {
......
678 681
            return true;
679 682
        }
680 683
    }
684
    
685
    @Override
686
    public JSpinner spinnerOfNumber(JSpinner spinner, Number value) {
687
        return NullableSpinnerUtils.ofNumber(spinner, value);
688
    }
689
    
690
    @Override
691
    public JSpinner spinnerOfNumber(JSpinner spinner, Class valueClass) {
692
        return NullableSpinnerUtils.ofNumber(spinner, valueClass);
693
    }
694
    
695
    @Override
696
    public JSpinner spinnerOfIntegers(JSpinner spinner, Integer value, int minimum, int maximum, int stepSize) {
697
        return NullableSpinnerUtils.ofIntegers(spinner, value, minimum, maximum, stepSize);
698
    }
681 699

  
700
    @Override
701
    public JSpinner spinnerOfTime(JSpinner spinner) {
702
         return NullableSpinnerUtils.ofTime(spinner);
703
    }
704

  
705
    @Override
706
    public JSpinner spinnerOfTime(JSpinner spinner, Time value) {
707
        return NullableSpinnerUtils.ofTime(spinner, value);
708
    }
709
    
710
    
711

  
682 712
}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/TestView.java
34 34
   JButton btnDatetime = new JButton();
35 35
   JSpinner spnDatetime = new JSpinner();
36 36
   JSpinner spnDatetimeMillis = new JSpinner();
37
   JSpinner spnNumber = new JSpinner();
38
   JButton btnNumber = new JButton();
37 39

  
38 40
   /**
39 41
    * Default constructor
......
125 127
   public JPanel createPanel()
126 128
   {
127 129
      JPanel jpanel1 = new JPanel();
128
      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE");
130
      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE");
129 131
      CellConstraints cc = new CellConstraints();
130 132
      jpanel1.setLayout(formlayout1);
131 133

  
......
198 200
      jpanel1.add(jlabel6,cc.xy(2,11));
199 201

  
200 202
      jpanel1.add(createPanel1(),cc.xy(4,11));
201
      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13 });
203
      spnNumber.setName("spnNumber");
204
      jpanel1.add(spnNumber,cc.xy(4,13));
205

  
206
      JLabel jlabel7 = new JLabel();
207
      jlabel7.setText("Number");
208
      jpanel1.add(jlabel7,cc.xy(2,13));
209

  
210
      btnNumber.setActionCommand("...");
211
      btnNumber.setName("btnNumber");
212
      btnNumber.setOpaque(false);
213
      btnNumber.setText("...");
214
      jpanel1.add(btnNumber,cc.xy(6,13));
215

  
216
      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14 });
202 217
      return jpanel1;
203 218
   }
204 219

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableNumberEditorFormatter.java
10 10
import java.text.NumberFormat;
11 11
import java.text.ParseException;
12 12
import javax.swing.JFormattedTextField;
13
import javax.swing.UIManager;
13 14
import javax.swing.text.NumberFormatter;
15
import org.apache.commons.lang3.StringUtils;
14 16

  
15 17
/**
16 18
 *
......
23 25
    private final Color colorOk;
24 26
    private final Color colorErr;
25 27
    
26
    NullableNumberEditorFormatter(NullableSpinnerNumberModel model, NumberFormat format, JFormattedTextField textField) {
28
    NullableNumberEditorFormatter(NullableSpinnerNumberModel model, NumberFormat format, JFormattedTextField textField, Class valueClass) {
27 29
        super(format);
28 30
        this.model = model;
29
        setValueClass(model.getValue().getClass());
31
        setValueClass(valueClass);
30 32
        this.textField = textField;
31
        this.colorOk = this.textField.getBackground();
33
        this.colorOk = UIManager.getColor("TextField.background");
32 34
        this.colorErr = new Color(255,225,232);           
33 35
    }
34 36

  
......
102 104
    }
103 105

  
104 106
    private Object stringToValue(String text, Format f) throws ParseException {
105
        if( text == null ) {
107
        if( text == null || StringUtils.isBlank(text)) {
106 108
            return null;
107 109
        }
108 110
        if (f == null) {
......
114 116
    @Override
115 117
    protected void setEditValid(boolean valid) {
116 118
        super.setEditValid(valid);
119
        decorateTextField(valid);
120
    }
121
    
122
    public void decorateTextField(boolean valid) {
117 123
        if( valid ) {
118 124
            this.textField.setBackground(colorOk);
119 125
        } else {
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableEditor.java
115 115

  
116 116
        Object source = e.getSource();
117 117
        String name = e.getPropertyName();
118
        if ((source instanceof JFormattedTextField) && "value".equals(name)) {
119
            Object lastValue = spinner.getValue();
118
        if ((source instanceof JFormattedTextField)) {
119
            if ("value".equals(name)) {
120
                Object lastValue = spinner.getValue();
120 121

  
121
            // Try to set the new value
122
            try {
123
                spinner.setValue(getTextField().getValue());
124
            } catch (IllegalArgumentException iae) {
125
                // SpinnerModel didn't like new value, reset
122
                // Try to set the new value
126 123
                try {
127
                    ((JFormattedTextField) source).setValue(lastValue);
128
                } catch (IllegalArgumentException iae2) {
129
                    // Still bogus, nothing else we can do, the
130
                    // SpinnerModel and JFormattedTextField are now out
131
                    // of sync.
124
                    spinner.setValue(getTextField().getValue());
125
                } catch (IllegalArgumentException iae) {
126
                    // SpinnerModel didn't like new value, reset
127
                    try {
128
                        ((JFormattedTextField) source).setValue(lastValue);
129
                    } catch (IllegalArgumentException iae2) {
130
                        // Still bogus, nothing else we can do, the
131
                        // SpinnerModel and JFormattedTextField are now out
132
                        // of sync.
133
                    }
132 134
                }
135
            } else if ("editValid".equals(name)) {
136
                Object newValue = e.getNewValue();
137
                if (newValue instanceof Boolean && (Boolean)newValue) {
138
                    JFormattedTextField.AbstractFormatter formatter = this.getTextField().getFormatter();
139
                    if (formatter instanceof NullableNumberEditorFormatter) {
140
                        ((NullableNumberEditorFormatter) formatter).decorateTextField((boolean) newValue);
141
                    }
142
                }  
133 143
            }
134 144
        }
135 145
    }
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableSpinnerNumberModel.java
37 37
    public NullableSpinnerNumberModel(Double value, double minimum, double maximum, double stepSize) {
38 38
        this(value, new Double(minimum), new Double(maximum), new Double(stepSize));
39 39
    }
40
    
41
    public NullableSpinnerNumberModel(Number value) {
42
        this(value, null, null, Integer.valueOf(1));
43
    }  
40 44

  
41 45
    public NullableSpinnerNumberModel() {
42 46
        this((Integer)0, null, null, Integer.valueOf(1));
......
80 84

  
81 85
    private Number incrValue(int dir)
82 86
    {
87
        if (value==null) {
88
            return null;
89
        }
83 90
        Number newValue;
84 91
        if ((value instanceof Float) || (value instanceof Double)) {
85 92
            double v = value.doubleValue() + (stepSize.doubleValue() * (double)dir);
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableTimeEditorFormatter.java
16 16
import java.util.Map;
17 17
import javax.swing.JFormattedTextField;
18 18
import javax.swing.SpinnerDateModel;
19
import javax.swing.UIManager;
19 20
import javax.swing.text.BadLocationException;
20 21
import javax.swing.text.DateFormatter;
21 22

  
......
34 35
        super(format);
35 36
        this.model = model;
36 37
        this.textField = textField;
37
        this.colorOk = this.textField.getBackground();
38
        this.colorOk = UIManager.getColor("TextField.background");
38 39
        this.colorErr = new Color(255,225,232);           
39 40
    }
40 41

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableNumberEditor.java
30 30
        return nf.toPattern();
31 31
    }
32 32

  
33
    public NullableNumberEditor(JSpinner spinner) {
34
        this(spinner, getDefaultPattern(spinner.getLocale()));
33
    public NullableNumberEditor(JSpinner spinner, Class valueClass) {
34
        this(spinner, getDefaultPattern(spinner.getLocale()),valueClass);
35 35
    }
36 36

  
37
    public NullableNumberEditor(JSpinner spinner, String decimalFormatPattern) {
38
        this(spinner, new DecimalFormat(decimalFormatPattern));
37
    public NullableNumberEditor(JSpinner spinner, String decimalFormatPattern, Class valueClass) {
38
        this(spinner, new DecimalFormat(decimalFormatPattern), valueClass);
39 39
    }
40 40

  
41
    private NullableNumberEditor(JSpinner spinner, DecimalFormat format) {
41
    private NullableNumberEditor(JSpinner spinner, DecimalFormat format, Class valueClass) {
42 42
        super(spinner);
43 43
        if (!(spinner.getModel() instanceof NullableSpinnerNumberModel)) {
44 44
            throw new IllegalArgumentException(
......
46 46
        }
47 47

  
48 48
        NullableSpinnerNumberModel model = (NullableSpinnerNumberModel) spinner.getModel();
49
        NumberFormatter formatter = new NullableNumberEditorFormatter(model,format, this.getTextField());
49
        NumberFormatter formatter = new NullableNumberEditorFormatter(model,format, this.getTextField(), valueClass);
50 50
        DefaultFormatterFactory factory = new DefaultFormatterFactory(formatter);
51 51
        JFormattedTextField ftf = getTextField();
52 52
        ftf.setEditable(true);
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/nullablespinner/NullableSpinnerUtils.java
23 23
    public static JSpinner ofIntegers(JSpinner spinner, Integer value, int minimum, int maximum, int stepSize) {
24 24
        NullableSpinnerNumberModel model = new NullableSpinnerNumberModel(value, minimum, maximum, stepSize);
25 25
        spinner.setModel(model);
26
        NullableNumberEditor editor = new NullableNumberEditor(spinner);
26
        NullableNumberEditor editor = new NullableNumberEditor(spinner, Integer.class);
27 27
        JFormattedTextField text = editor.getTextField();
28 28
//    text.setHorizontalAlignment(SwingConstants.RIGHT);
29 29
//        ClearButtonUtils.addClearButton(text);
......
31 31
        spinner.setEditor(editor);
32 32
        return spinner;
33 33
    }
34
    
35
    public static JSpinner ofNumber(JSpinner spinner, Class valueClass) {
36
        NullableSpinnerNumberModel model = new NullableSpinnerNumberModel(null);
37
        spinner.setModel(model);
38
        NullableNumberEditor editor = new NullableNumberEditor(spinner, valueClass);
39
        JFormattedTextField text = editor.getTextField();
40
//    text.setHorizontalAlignment(SwingConstants.RIGHT);
41
//        ClearButtonUtils.addClearButton(text);
42
        ContextMenuUtils.setDefaultContextMenu(text);
43
        spinner.setEditor(editor);
44
        return spinner;
45
    }
46
    
47
    public static JSpinner ofNumber(JSpinner spinner, Number value) {
48
        NullableSpinnerNumberModel model = new NullableSpinnerNumberModel(value);
49
        spinner.setModel(model);
50
        NullableNumberEditor editor = new NullableNumberEditor(spinner, value.getClass());
51
        JFormattedTextField text = editor.getTextField();
52
//    text.setHorizontalAlignment(SwingConstants.RIGHT);
53
//        ClearButtonUtils.addClearButton(text);
54
        ContextMenuUtils.setDefaultContextMenu(text);
55
        spinner.setEditor(editor);
56
        return spinner;
57
    }
34 58

  
35 59
    public static JSpinner ofTime(JSpinner spinner) {
36 60
        return ofTime(spinner, new Time(new Date().getTime()));
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/Test.java
7 7
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
8 8
import java.awt.Dimension;
9 9
import java.awt.event.ActionEvent;
10
import java.sql.Time;
10 11
import javax.swing.ImageIcon;
11 12
import javax.swing.JComponent;
12 13
import org.gvsig.tools.swing.api.Component;
13 14
import org.gvsig.tools.swing.icontheme.IconTheme;
14 15
import org.gvsig.tools.swing.icontheme.IconThemeManager;
16
import org.gvsig.tools.swing.impl.pickercontroller.nullablespinner.NullableSpinnerUtils;
15 17

  
16 18
/**
17 19
 *
......
46 48
      this.pickerFile = new FilePickerControllerImpl(txtFile1, btnFile1);
47 49
      this.pickerColor = new ColorPickerControllerImpl(txtColor1, btnColor1);
48 50
      this.pickerFile = new FilePickerControllerImpl(txtFile2, btnFile2);
49
      this.pickerTime = new TimePickerControllerImpl(this.spnTime);
51
      //this.pickerTime = new TimePickerControllerImpl(this.spnTime);
52
      spnTime = NullableSpinnerUtils.ofTime(spnTime, null);
50 53
      this.pickerTimestamp = new TimestampPickerControllerImpl(txtDatetime, btnDatetime, spnDatetime, spnDatetimeMillis);
54
      NullableSpinnerUtils.ofNumber(spnNumber, Integer.class);
55
      this.btnNumber.addActionListener((e) -> {
56
          Object value = this.spnNumber.getValue();
57
          System.out.println("Value spinner:" + value);
58
      });
51 59
      
60
      
52 61
//      addClearButton1(this.txtFile2, null);
53 62
      
54 63
      this.setPreferredSize(new Dimension(300, 200));
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/TestView.xml
24 24
    </at>
25 25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26 26
   </super>
27
   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/TestView.xml</at>
28
   <at name="path">datos/devel/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/TestView.xml</at>
29
   <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
27
   <at name="id">/home/osc/devel/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/TestView.xml</at>
28
   <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
30 29
   <at name="colspecs">FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE</at>
31 30
   <at name="components">
32 31
    <object classname="java.util.LinkedList">
......
315 314
             </object>
316 315
            </at>
317 316
            <at name="name">txtFile1</at>
318
            <at name="width">1249</at>
317
            <at name="width">717</at>
319 318
            <at name="height">22</at>
320 319
           </object>
321 320
          </at>
......
369 368
             </object>
370 369
            </at>
371 370
            <at name="name">txtColor1</at>
372
            <at name="width">1249</at>
371
            <at name="width">717</at>
373 372
            <at name="height">22</at>
374 373
           </object>
375 374
          </at>
......
423 422
             </object>
424 423
            </at>
425 424
            <at name="name">txtDate</at>
426
            <at name="width">1249</at>
425
            <at name="width">717</at>
427 426
            <at name="height">22</at>
428 427
           </object>
429 428
          </at>
......
479 478
            <at name="scrollableTracksViewportHeight">true</at>
480 479
            <at name="scrollableTracksViewportWidth">true</at>
481 480
            <at name="name">txtFile2</at>
482
            <at name="width">1247</at>
481
            <at name="width">715</at>
483 482
            <at name="scollBars">
484 483
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
485 484
              <at name="name">scollBars</at>
......
507 506
              </at>
508 507
             </object>
509 508
            </at>
510
            <at name="height">530</at>
509
            <at name="height">331</at>
511 510
           </object>
512 511
          </at>
513 512
         </object>
......
829 828
           <object classname="com.jeta.forms.store.support.PropertyMap">
830 829
            <at name="opaque">false</at>
831 830
            <at name="name">spnTime</at>
832
            <at name="width">1249</at>
831
            <at name="width">717</at>
833 832
            <at name="height">22</at>
834 833
           </object>
835 834
          </at>
......
882 881
              </at>
883 882
             </object>
884 883
            </at>
884
            <at name="name"></at>
885 885
            <at name="width">47</at>
886
            <at name="name"/>
887 886
            <at name="text">Datetime</at>
888 887
            <at name="fill">
889 888
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
......
915 914
         </at>
916 915
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
917 916
        </super>
918
        <at name="id">embedded.1159577791</at>
917
        <at name="id">embedded.908042074</at>
919 918
        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
920 919
        <at name="colspecs">FILL:DEFAULT:GROW(0.6),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.2),FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.2)</at>
921 920
        <at name="components">
......
965 964
                  </object>
966 965
                 </at>
967 966
                 <at name="name">txtDatetime</at>
968
                 <at name="width">674</at>
967
                 <at name="width">355</at>
969 968
                 <at name="height">22</at>
970 969
                </object>
971 970
               </at>
......
1057 1056
                <object classname="com.jeta.forms.store.support.PropertyMap">
1058 1057
                 <at name="opaque">false</at>
1059 1058
                 <at name="name">spnDatetime</at>
1060
                 <at name="width">249</at>
1059
                 <at name="width">143</at>
1061 1060
                 <at name="height">22</at>
1062 1061
                </object>
1063 1062
               </at>
......
1091 1090
               <at name="properties">
1092 1091
                <object classname="com.jeta.forms.store.support.PropertyMap">
1093 1092
                 <at name="name">spnDatetimeMillis</at>
1094
                 <at name="width">250</at>
1093
                 <at name="width">143</at>
1095 1094
                 <at name="height">22</at>
1096 1095
                </object>
1097 1096
               </at>
......
1182 1181
       </object>
1183 1182
      </at>
1184 1183
     </item>
1184
     <item >
1185
      <at name="value">
1186
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1187
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1188
         <at name="cellconstraints">
1189
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1190
           <at name="column">4</at>
1191
           <at name="row">13</at>
1192
           <at name="colspan">1</at>
1193
           <at name="rowspan">1</at>
1194
           <at name="halign">default</at>
1195
           <at name="valign">default</at>
1196
           <at name="insets" object="insets">0,0,0,0</at>
1197
          </object>
1198
         </at>
1199
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1200
        </super>
1201
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1202
        <at name="beanclass">javax.swing.JSpinner</at>
1203
        <at name="beanproperties">
1204
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1205
          <at name="classname">javax.swing.JSpinner</at>
1206
          <at name="properties">
1207
           <object classname="com.jeta.forms.store.support.PropertyMap">
1208
            <at name="name">spnNumber</at>
1209
            <at name="width">717</at>
1210
            <at name="height">22</at>
1211
           </object>
1212
          </at>
1213
         </object>
1214
        </at>
1215
       </object>
1216
      </at>
1217
     </item>
1218
     <item >
1219
      <at name="value">
1220
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1221
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1222
         <at name="cellconstraints">
1223
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1224
           <at name="column">2</at>
1225
           <at name="row">13</at>
1226
           <at name="colspan">1</at>
1227
           <at name="rowspan">1</at>
1228
           <at name="halign">default</at>
1229
           <at name="valign">default</at>
1230
           <at name="insets" object="insets">0,0,0,0</at>
1231
          </object>
1232
         </at>
1233
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1234
        </super>
1235
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1236
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
1237
        <at name="beanproperties">
1238
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1239
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
1240
          <at name="properties">
1241
           <object classname="com.jeta.forms.store.support.PropertyMap">
1242
            <at name="border">
1243
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1244
              <super classname="com.jeta.forms.store.properties.BorderProperty">
1245
               <at name="name">border</at>
1246
              </super>
1247
              <at name="borders">
1248
               <object classname="java.util.LinkedList">
1249
                <item >
1250
                 <at name="value">
1251
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1252
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
1253
                    <at name="name">border</at>
1254
                   </super>
1255
                  </object>
1256
                 </at>
1257
                </item>
1258
               </object>
1259
              </at>
1260
             </object>
1261
            </at>
1262
            <at name="name"></at>
1263
            <at name="width">47</at>
1264
            <at name="text">Number</at>
1265
            <at name="fill">
1266
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
1267
              <at name="name">fill</at>
1268
             </object>
1269
            </at>
1270
            <at name="height">16</at>
1271
           </object>
1272
          </at>
1273
         </object>
1274
        </at>
1275
       </object>
1276
      </at>
1277
     </item>
1278
     <item >
1279
      <at name="value">
1280
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1281
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1282
         <at name="cellconstraints">
1283
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1284
           <at name="column">6</at>
1285
           <at name="row">13</at>
1286
           <at name="colspan">1</at>
1287
           <at name="rowspan">1</at>
1288
           <at name="halign">default</at>
1289
           <at name="valign">default</at>
1290
           <at name="insets" object="insets">0,0,0,0</at>
1291
          </object>
1292
         </at>
1293
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1294
        </super>
1295
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1296
        <at name="beanclass">javax.swing.JButton</at>
1297
        <at name="beanproperties">
1298
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1299
          <at name="classname">javax.swing.JButton</at>
1300
          <at name="properties">
1301
           <object classname="com.jeta.forms.store.support.PropertyMap">
1302
            <at name="border">
1303
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1304
              <super classname="com.jeta.forms.store.properties.BorderProperty">
1305
               <at name="name">border</at>
1306
              </super>
1307
              <at name="borders">
1308
               <object classname="java.util.LinkedList">
1309
                <item >
1310
                 <at name="value">
1311
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1312
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
1313
                    <at name="name">border</at>
1314
                   </super>
1315
                  </object>
1316
                 </at>
1317
                </item>
1318
               </object>
1319
              </at>
1320
             </object>
1321
            </at>
1322
            <at name="actionCommand">...</at>
1323
            <at name="opaque">false</at>
1324
            <at name="name">btnNumber</at>
1325
            <at name="width">41</at>
1326
            <at name="text">...</at>
1327
            <at name="height">24</at>
1328
           </object>
1329
          </at>
1330
         </object>
1331
        </at>
1332
       </object>
1333
      </at>
1334
     </item>
1185 1335
    </object>
1186 1336
   </at>
1187 1337
   <at name="properties">
......
1239 1389
   <at name="cellpainters">
1240 1390
    <object classname="com.jeta.forms.store.support.Matrix">
1241 1391
     <at name="rows">
1242
      <object classname="[Ljava.lang.Object;" size="13">
1392
      <object classname="[Ljava.lang.Object;" size="14">
1243 1393
       <at name="item" index="0">
1244 1394
        <object classname="[Ljava.lang.Object;" size="7"/>
1245 1395
       </at>
......
1279 1429
       <at name="item" index="12">
1280 1430
        <object classname="[Ljava.lang.Object;" size="7"/>
1281 1431
       </at>
1432
       <at name="item" index="13">
1433
        <object classname="[Ljava.lang.Object;" size="7"/>
1434
       </at>
1282 1435
      </object>
1283 1436
     </at>
1284 1437
    </object>

Also available in: Unified diff