1212
1313import javax .swing .BorderFactory ;
1414import javax .swing .JButton ;
15+ import javax .swing .JComponent ;
1516import javax .swing .JPanel ;
1617import javax .swing .JScrollPane ;
1718import javax .swing .JTable ;
2829 * use getter and setter
2930 *
3031 */
31- public class HistoryUI extends JPanel {
32+ public class TableUITemplate extends JPanel {
3233
3334 private JTable resultsTable ;
3435 private DefaultTableModel defaultTableModel ;
3536 private JScrollPane scrollPane ;
3637 private JPanel button_panel ;
3738 private ArrayList <JButton > buttonArray = new ArrayList <JButton >();
38- private Color color = new Color ( 150 , 150 , 150 ) ;
39- protected HistoryUIInterface delegate ;
39+ private Color color ;
40+ protected TableUITemplateInterface delegate ;
4041 private int index = -1 ; //value of last item that is not untraced
42+ protected ArrayList <JComponent > jcomponents = new ArrayList <JComponent >();
4143
4244 /**
4345 * Setup historyUI
4446 */
45- public HistoryUI (String [] titles ){
47+ public TableUITemplate (String [] titles ){
4648
4749 // set the defaultTableModel to non editable by user clicking around
4850 this .setDefaultTableModel ((new DefaultTableModel (0 , 1 ) {
@@ -54,7 +56,6 @@ public boolean isCellEditable(int row, int column) {
5456 }
5557 }));
5658
57-
5859 setLayout (new BorderLayout (0 , 0 ));
5960
6061 //set size
@@ -72,22 +73,20 @@ public boolean isCellEditable(int row, int column) {
7273 //create panel for buttons
7374 setButtonPanel ();
7475
75- setForeground (getColor ());
76- setBackground (getColor ());
7776 }
7877
7978
8079 protected void setTable () {
81- this . setResultsTable (( new JTable ()) );
80+ resultsTable = new JTable ();
8281 getResultsTable ().setTableHeader (null );
83- getResultsTable ().setFont (new Font ("Apple LiSung" , Font .PLAIN , 16 ));
8482 getResultsTable ().setShowHorizontalLines (false );
8583 getResultsTable ().setShowVerticalLines (false );
8684 getResultsTable ().setShowGrid (false );
8785 getResultsTable ().setBorder (null );
8886 getResultsTable ().setBackground (getColor ());
89- getResultsTable ().setForeground (Color .WHITE );
87+ getResultsTable ().setForeground (Color .BLACK );
9088 getResultsTable ().setModel (getDefaultTableModel ());
89+ jcomponents .add (resultsTable );
9190 }
9291
9392 /**
@@ -112,14 +111,16 @@ private void setScrollPane(){
112111 scrollPane .setBackground (getColor ());
113112 scrollPane .setBorder (BorderFactory .createLineBorder (Color .BLACK ));
114113 add (scrollPane , BorderLayout .CENTER );
114+ jcomponents .add (scrollPane );
115115 }
116116
117117 private void setButtonPanel () {
118118 FlowLayout fl_button_panel = new FlowLayout ();
119- setButton_panel ( new JPanel (fl_button_panel ) );
119+ button_panel = new JPanel (fl_button_panel );
120120 getButton_panel ().setBorder (BorderFactory .createLineBorder (Color .black ));
121121 getButton_panel ().setBackground (getColor ());
122122 add (getButton_panel (), BorderLayout .SOUTH );
123+ jcomponents .add (button_panel );
123124 }
124125
125126 /**
@@ -133,10 +134,11 @@ public void redo(){
133134 * set redo for specific row
134135 */
135136 public void redo (int r ,int c ){
136- HistoryDataObject o = (HistoryDataObject ) getDefaultTableModel ().getValueAt (r ,c );
137+ TableUIDataObject o = (TableUIDataObject ) getDefaultTableModel ().getValueAt (r ,c );
137138 o .setUntraced (false );
138139 getDefaultTableModel ().fireTableDataChanged ();
139140 }
141+
140142
141143 /**
142144 * set undo for last row, last col
@@ -150,17 +152,18 @@ public void undo(){
150152 * @param r
151153 */
152154 public void undo (int r , int c ){
153- HistoryDataObject o = (HistoryDataObject ) getDefaultTableModel ().getValueAt (r , c );
155+ TableUIDataObject o = (TableUIDataObject ) getDefaultTableModel ().getValueAt (r , c );
154156 o .setUntraced (true );
155157 getDefaultTableModel ().fireTableDataChanged ();
156158 index --;
157159 }
158160
161+
159162 /**
160163 * add a row to the end of table
161164 * receive a HistoryDataObject
162165 */
163- public void insert (HistoryDataObject e ){
166+ public void insert (TableUIDataObject e ){
164167 clearUntraced ();
165168 int r = getNumRow ();
166169 insert (e ,r );
@@ -169,7 +172,7 @@ public void insert(HistoryDataObject e){
169172 /**
170173 * insert a row into specific row
171174 */
172- public void insert (HistoryDataObject e , int r ){
175+ public void insert (TableUIDataObject e , int r ){
173176 clearUntraced ();
174177 getDefaultTableModel ().insertRow (r ,new Object [] {e });
175178 getDefaultTableModel ().fireTableDataChanged ();
@@ -246,7 +249,7 @@ public void clear(){
246249 getDefaultTableModel ().fireTableDataChanged ();
247250 }
248251
249- public void setDelegate (HistoryUIInterface delegate ) {
252+ public void setDelegate (TableUITemplateInterface delegate ) {
250253 this .delegate = delegate ;
251254 }
252255
@@ -346,5 +349,17 @@ public Color getColor() {
346349 public void setColor (Color color ) {
347350 this .color = color ;
348351 }
352+
353+ @ Override
354+ public void setBackground (Color c ){
355+ super .setBackground (c );
356+ color = c ;
357+
358+ }
359+
360+
361+ public int getSelectedRow (){
362+ return resultsTable .getSelectedRow ();
363+ }
349364}
350365
0 commit comments