-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainFrame.java
More file actions
108 lines (91 loc) · 4.36 KB
/
MainFrame.java
File metadata and controls
108 lines (91 loc) · 4.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
/**
* Created by Darkrengarius on 06.06.2016.
*/
public class MainFrame extends JFrame {
private ArrayList<ArrayList<Boolean>> graphMatrix;
private ArrayList<ArrayList<Integer>> tarjanComponents;
private ArrayList<ArrayList<Integer>> malgrangeComponents;
private ArrayList<ArrayList<Integer>> kosarajuComponents;
public MainFrame (ArrayList<ArrayList<Boolean>> graphMatrix) {
super("Strong connectivity components searcher");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.graphMatrix = graphMatrix;
tarjanComponents = new ArrayList<>();
malgrangeComponents = new ArrayList<>();
kosarajuComponents = new ArrayList<>();
JPanel resultsPanel = new JPanel();
JLabel tarjanResultCaption = new JLabel("Tarjan algorithm results:");
JLabel malgrangeResultCaption = new JLabel("Malgrange algorithm results:");
JLabel kosarajuResultCaption = new JLabel("Kosaraju algorithm results:");
JLabel tarjanResult = new JLabel("");
JLabel malgrangeResult = new JLabel("");
JLabel kosarajuResult = new JLabel("");
JPanel tarjanPanel = new JPanel();
tarjanPanel.setLayout(new BoxLayout(tarjanPanel, BoxLayout.Y_AXIS));
tarjanPanel.add(tarjanResultCaption);
tarjanPanel.add(tarjanResult);
JButton tarjanButton = new JButton("Calculate");
tarjanButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TarjanAlgorithm tarjanSearcher = new TarjanAlgorithm(graphMatrix);
tarjanComponents = tarjanSearcher.findComponents();
setLabelText(tarjanComponents, tarjanResult);
tarjanButton.setVisible(false);
}
});
tarjanPanel.add(tarjanButton);
JPanel malgrangePanel = new JPanel();
malgrangePanel.setLayout(new BoxLayout(malgrangePanel, BoxLayout.Y_AXIS));
malgrangePanel.add(malgrangeResultCaption);
malgrangePanel.add(malgrangeResult);
JButton malgrangeButton = new JButton("Calculate");
malgrangeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MalgrangeAlgorithm malgrangeSearcher = new MalgrangeAlgorithm(graphMatrix);
malgrangeComponents = malgrangeSearcher.findComponents();
setLabelText(malgrangeComponents, malgrangeResult);
malgrangeButton.setVisible(false);
}
});
malgrangePanel.add(malgrangeButton);
JPanel kosarajuPanel = new JPanel();
kosarajuPanel.setLayout(new BoxLayout(kosarajuPanel, BoxLayout.Y_AXIS));
kosarajuPanel.add(kosarajuResultCaption);
kosarajuPanel.add(kosarajuResult);
JButton kosarajuButton = new JButton("Calculate");
kosarajuButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
KosarajuAlgorithm kosarajuSearcher = new KosarajuAlgorithm(graphMatrix);
kosarajuComponents = kosarajuSearcher.findComponents();
setLabelText(kosarajuComponents, kosarajuResult);
kosarajuButton.setVisible(false);
}
});
kosarajuPanel.add(kosarajuButton);
resultsPanel.add(tarjanPanel);
resultsPanel.add(malgrangePanel);
resultsPanel.add(kosarajuPanel);
add(resultsPanel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void setLabelText (ArrayList<ArrayList<Integer>> components, JLabel label) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < components.size(); i++) {
stringBuilder.append("[ ");
for (int j = 0; j < components.get(i).size() - 1; j++) {
stringBuilder.append("" + components.get(i).get(j) + ", ");
}
stringBuilder.append("" + components.get(i).get(components.get(i).size() - 1) + " ]\n");
}
label.setText(stringBuilder.toString());
}
}