-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFramework.java
146 lines (130 loc) · 3.8 KB
/
Framework.java
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package edu.cmu.qatar.cs214.hw.hw4;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
public class Framework extends JPanel {
private List<DataPlugin> dataPlugin;
private List<AnalysisPlugin> analysisPlugin;
private ArrayList<JPanel> jps;
private ArrayList<JPanel> analysedPanelList;
private JTabbedPane jtp;
private JPanel selectedTab = new JPanel();
private String userID = "";
private DataModular dataModular;
public Framework(List<DataPlugin> dataPlugin,
List<AnalysisPlugin> analysisPlugin) {
this.dataPlugin = dataPlugin;
this.dataModular = new DataModular(this.dataPlugin);
this.analysisPlugin = analysisPlugin;
for (AnalysisPlugin aP : analysisPlugin) {
aP.registerDataModular(dataModular);
}
analysedPanelList = new ArrayList<JPanel>();
jps = new ArrayList<JPanel>();
initGui();
}
/**
* initializes the mainFrame
*/
private void initGui() {
setLayout(new BorderLayout());
jtp = new JTabbedPane();
for (int i = 0; i < analysisPlugin.size(); i++) {
analysedPanelList.add(i, new JPanel());
}
for (int i = 0; i < analysisPlugin.size(); i++) {
JPanel jp1 = new JPanel();
jp1.setLayout(new BorderLayout());
jp1.add(createCenterFrame(i), BorderLayout.NORTH);
jp1.add(analysedPanelList.get(i), BorderLayout.SOUTH);
jps.add(jp1);
jtp.addTab(analysisPlugin.get(0).getTabText(), jp1);
}
add(jtp);
}
/**
* @param user
* sets the user name to user
*/
private void setUserName(String user) {
this.userID = user;
}
/**
* @return the jpanel with the textbox and the button
*/
private JPanel createCenterFrame(int i) {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JTextField textfieldResult = new JTextField("Add User Name");
JButton processButton = new JButton();
processButton.setText("Process");
processButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String user = textfieldResult.getText();
System.out.println("user is '" + user + "'");
if (user.equals("") || user.equals("Add User Name")) {
JOptionPane.showMessageDialog(panel, "Add a Player's Name");
} else {
setUserName(user);
processMsg(i);
changeGui(i);
}
}
});
textfieldResult.setText("");
textfieldResult.setMaximumSize(new Dimension(Integer.MAX_VALUE,
textfieldResult.getMinimumSize().height));
panel.add(textfieldResult);
panel.add(processButton);
return panel;
}
/**
* @param D
* adds dataplugin D
*/
public void registerDataPlugin(DataPlugin D) {
this.dataPlugin.add(D);
}
/**
* @param A
* adds Analysis plugin A
*/
public void registerAnalysisPlugin(AnalysisPlugin A) {
this.analysisPlugin.add(A);
}
/**
* processes the Msg for the user id
*/
public void processMsg(int i) {
analysisPlugin.get(i).process(this.userID, i);
}
/**
* @param panel
* changes the mainframe according to the panel rturned by the
* analysis plugin
*/
public void changeGui(int k) {
JPanel panel = analysisPlugin.get(k).ChangeGui();
System.out.println("selected tab is " + selectedTab);
jps.get(k).remove(analysedPanelList.get(k));
analysedPanelList.set(k, panel);
jps.get(k).add(analysedPanelList.get(k));
System.out.println("added the panel to the main window");
}
}