1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.x.impl.swing;
14
15 import java.awt.Color;
16 import java.awt.Dimension;
17
18 import javax.swing.BorderFactory;
19 import javax.swing.JComponent;
20 import javax.swing.JScrollPane;
21 import javax.swing.table.TableModel;
22
23 import org.jdesktop.swingx.JXTable;
24
25 import com.eviware.x.form.XFormTextField;
26
27 public class JTableFormField extends AbstractSwingXFormField<JComponent> implements XFormTextField
28 {
29 private JScrollPane scrollPane;
30
31 public JTableFormField(String description)
32 {
33 super( new JXTable() );
34
35 scrollPane = new JScrollPane( getTable() );
36 scrollPane.setPreferredSize(new Dimension( 350, 200 ));
37 getTable().setToolTipText(description);
38 getTable().setHorizontalScrollEnabled(true);
39 }
40
41 public void setRequired(boolean required, String message)
42 {
43 super.setRequired(required, message);
44
45 if( required )
46 getComponent().setBorder(
47 BorderFactory.createCompoundBorder(
48 BorderFactory.createLineBorder( Color.RED ),
49 BorderFactory.createEmptyBorder( 2, 2, 2, 2 )));
50 else
51 getComponent().setBorder(
52 BorderFactory.createCompoundBorder(
53 BorderFactory.createLineBorder( Color.GRAY ),
54 BorderFactory.createEmptyBorder( 2, 2, 2, 2 )));
55 }
56
57 public JXTable getTable()
58 {
59 return (JXTable) super.getComponent();
60 }
61
62 public JComponent getComponent()
63 {
64 return scrollPane;
65 }
66
67 @Override
68 public void setProperty(String name, Object value)
69 {
70 if( "tableModel".equals(name))
71 {
72 getTable().setModel((TableModel) value);
73 }
74 else
75 super.setProperty(name, value);
76 }
77
78
79 @Override
80 public Object getProperty(String name)
81 {
82 if( "tableModel".equals(name))
83 {
84 return getTable().getModel();
85 }
86 else
87 return super.getProperty(name);
88 }
89
90 public void setValue(String value)
91 {
92
93 }
94
95 public String getValue()
96 {
97 return null;
98 }
99
100 public void setWidth(int columns)
101 {
102 }
103
104 @Override
105 public boolean isMultiRow()
106 {
107 return true;
108 }
109 }