44import java .awt .event .ActionEvent ;
55import java .awt .event .ActionListener ;
66import java .util .Arrays ;
7- import java .util .Stack ;
8- import java .util .stream .IntStream ;
97
8+ import javax .swing .DefaultListSelectionModel ;
9+ import javax .swing .JButton ;
1010import javax .swing .JFrame ;
1111import javax .swing .JPanel ;
1212import javax .swing .JScrollPane ;
1515import javax .swing .table .DefaultTableModel ;
1616
1717
18- import javax .swing .DefaultListSelectionModel ;
19- import javax .swing .JButton ;
20-
21-
2218/**
2319 * create historyUI
2420 *
2521 */
26- public class HistoryUI extends JFrame implements ActionListener
22+ public class HistoryUI extends JFrame
2723 {
28- private static final long serialVersionUID = 8141494344180865577L ;
2924 private JTable resultsTable ;
3025 private DefaultTableModel defaultTableModel ;
3126 private JPanel panel ;
3227 private JScrollPane scrollPane ;
3328 private JPanel button_panel ;
3429
35- private Stack < HistoryDataObject []> delete_history ;
30+ private HistoryUIInterface delegate ;
3631
3732 /**
3833 * Setup historyUI
3934 */
4035 public HistoryUI (String [] titles ){
4136
4237 // set the defaultTableModel to non editable by user clicking around
43- setDefaultTableModel (new DefaultTableModel (0 , 1 ) {
38+ this . defaultTableModel = (new DefaultTableModel (0 , 1 ) {
4439 private static final long serialVersionUID = 1L ;
4540
4641 @ Override
@@ -55,16 +50,14 @@ public boolean isCellEditable(int row, int column) {
5550 panel .setLayout (new BorderLayout (0 , 0 ));
5651
5752 // show result
58- setResultsTable (new JTable ());
59- getResultsTable () .setModel (getDefaultTableModel () );
60- getResultsTable () .setSelectionModel (new ForcedListSelectionModel ());
53+ this . resultsTable = (new JTable ());
54+ resultsTable .setModel (defaultTableModel );
55+ resultsTable .setSelectionModel (new ForcedListSelectionModel ());
6156
6257 // scroll option
63- scrollPane = new JScrollPane (getResultsTable () );
58+ scrollPane = new JScrollPane (resultsTable );
6459 panel .add (scrollPane , BorderLayout .CENTER );
6560
66- //stack, used to stored deleted rows
67- setDelete_history (new Stack <>());
6861
6962 //create buttons for panel
7063 createButtons (titles );
@@ -80,51 +73,17 @@ private void createButtons(String[] titles){
8073 for (String title : titles ){
8174 JButton button = new JButton (title );
8275 button_panel .add (button );
83- button .addActionListener (this );
76+ button .addActionListener (new ActionListener () {
77+
78+ @ Override
79+ public void actionPerformed (ActionEvent e ) {
80+ delegate .didPressButton (title , resultsTable .getSelectedRow ());
81+ }
82+ });
8483 }
8584 }
8685
87- @ Override
88- public void actionPerformed (ActionEvent e ) {
89- // TODO Auto-generated method stub
90- JButton btn = (JButton ) e .getSource ();
91- if (btn .getText ().equals ("delete" )){
92- System .out .println ("aaaa" );
93- int [] indices = getResultsTable ().getSelectedRows ();
94- if (indices .length != 0 )
95- removeSeveralRows (indices );
96- }
97- //if exit button pressed, close window
98- else if (btn .getText ().equals ("exit" )){
99- System .exit (EXIT_ON_CLOSE );
100- }
101-
102- //if revert button pressed, revert to last version
103- else if (btn .getText ().equals ("revert" )){
104- revert ();
105- }
106-
107- //if clear button pressed, delete all rows in table
108- else if (btn .getText ().equals ("clear" )){
109- int num_rows = getResultsTable ().getRowCount ();
110- int [] indices = IntStream .range (0 , num_rows ).toArray ();
111- removeSeveralRows (indices );
112- }
113- }
11486
115- /**
116- * revert deleted rows
117- */
118- public void revert (){
119-
120- if (!getDelete_history ().isEmpty ()){
121- HistoryDataObject [] objects = delete_history .pop ();
122- //insert data to its row
123- for (int i = 0 ; i <objects .length ; i ++){
124- getDefaultTableModel ().insertRow (objects [i ].getRow (), new Object [] {objects [i ]} );
125- }
126- }
127- }
12887
12988
13089
@@ -133,8 +92,8 @@ public void revert(){
13392 * receive a HistoryDataObject
13493 */
13594 public void insert (HistoryDataObject e ){
136- getDefaultTableModel () .addRow (new Object [] {e });
137- getDefaultTableModel () .fireTableDataChanged ();
95+ defaultTableModel .addRow (new Object [] {e });
96+ defaultTableModel .fireTableDataChanged ();
13897 }
13998
14099
@@ -149,42 +108,23 @@ public void removeSeveralRows(int[] indices){
149108
150109 //loop through indices and delete
151110 for (int i =indices .length -1 ;i >=0 ;i --){
152- objects [i ] = (HistoryDataObject ) getResultsTable (). getModel () .getValueAt (indices [i ], 0 );
111+ objects [i ] = (HistoryDataObject ) defaultTableModel .getValueAt (indices [i ], 0 );
153112 objects [i ].setRow (indices [i ]);
154- getDefaultTableModel () .removeRow (indices [i ]);
113+ defaultTableModel .removeRow (indices [i ]);
155114 }
156115
157- //stores deleted rows and its data to delete_history stack
158- getDelete_history ().push (objects );
159- }
160-
161- public void setDelegate (HistoryUIInterface delegate ) {
162- }
163-
164- public DefaultTableModel getDefaultTableModel () {
165- return defaultTableModel ;
166- }
167-
168-
169- public void setDefaultTableModel (DefaultTableModel defaultTableModel ) {
170- this .defaultTableModel = defaultTableModel ;
171116 }
172-
173- public JTable getResultsTable () {
174- return resultsTable ;
175- }
176-
177-
178- public void setResultsTable (JTable resultsTable ) {
179- this .resultsTable = resultsTable ;
180- }
181-
182- public Stack <HistoryDataObject []> getDelete_history () {
183- return delete_history ;
117+
118+ public void clear (){
119+ int rowCount = defaultTableModel .getRowCount ();
120+ for (int i = 0 ; i < rowCount ; i ++){
121+ defaultTableModel .removeRow (0 );
122+ }
123+ defaultTableModel .fireTableDataChanged ();
184124 }
185125
186- public void setDelete_history ( Stack < HistoryDataObject []> delete_history ) {
187- this .delete_history = delete_history ;
126+ public void setDelegate ( HistoryUIInterface delegate ) {
127+ this .delegate = delegate ;
188128 }
189129
190130 /**
0 commit comments