You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
5.5 KiB

package ru.egspt;
import java.awt.Color;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class DataPane extends JPanel{
private JPanel controlPane = new JPanel();//панель кнопок - пока не надо
private JButton generateXLSXButton = new JButton("create xlsx");
private JButton generateTXTButton = new JButton("create txt");
private JPanel usersPane = new JPanel();//панель пользователей
private JPanel quizesPane = new JPanel();//панель опросов
private JPanel resultsPane = new JPanel();//панель результатов
private JTable usersTable;
private JTable quizesTable;
private JTable resultsTable;
private UsersTableModel usersTableModel;
private QuizesTableModel quizesTableModel;
private ResultsTableModel resultsTableModel;
public DataPane(){}
public DataPane(App app){
setupUsersPane(app);
setupQuizesPane(app);
setupResultsPane(app);
}
public void init(){
this.setupControlPane();
this.setLayout(new BorderLayout());
this.add(controlPane, BorderLayout.NORTH);
this.add(usersPane, BorderLayout.WEST);
this.add(quizesPane, BorderLayout.CENTER);
this.add(resultsPane, BorderLayout.EAST);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "data", TitledBorder.CENTER, TitledBorder.CENTER);
this.setBorder(border);
this.setVisible(true);
}
public void setupControlPane(){
controlPane.add(generateXLSXButton);
controlPane.add(generateTXTButton);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "data-controls-pane", TitledBorder.CENTER, TitledBorder.CENTER);
controlPane.setBorder(border);
controlPane.setVisible(false);
}
/**
* Настройка панели пользователей
*/
public void setupUsersPane(App app){
usersTableModel = new UsersTableModel(app.getData());
usersTable = new JTable(usersTableModel);
//настройка заголовков
int i = 0;
while (i < usersTable.getColumnCount()){
usersTable.getColumnModel().getColumn(i).setHeaderValue(usersTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(usersTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
usersPane.setLayout(new BorderLayout());
usersPane.add(scrollPane);
usersPane.add(app.getTagPane(), BorderLayout.NORTH);//добавили панель тегов
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Users", TitledBorder.CENTER, TitledBorder.CENTER);
usersPane.setBorder(border);
}
/**
* Настройка панели опросов
*/
public void setupQuizesPane(App app){
quizesTableModel = new QuizesTableModel(app.getData());
quizesTable = new JTable(quizesTableModel);
//настройка заголовков
int i = 0;
while (i < quizesTable.getColumnCount()){
quizesTable.getColumnModel().getColumn(i).setHeaderValue(quizesTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(quizesTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
quizesPane.setLayout(new BorderLayout());
quizesPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Quizes", TitledBorder.CENTER, TitledBorder.CENTER);
quizesPane.setBorder(border);
}
/**
* Настройка панели результатов
*/
public void setupResultsPane(App app){
resultsTableModel = new ResultsTableModel(app.getData());
resultsTable = new JTable(resultsTableModel);
//настройка заголовков
int i = 0;
while (i < resultsTable.getColumnCount()){
resultsTable.getColumnModel().getColumn(i).setHeaderValue(resultsTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(resultsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
resultsPane.setLayout(new BorderLayout());
resultsPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Results", TitledBorder.CENTER, TitledBorder.CENTER);
resultsPane.setBorder(border);
}
public void setQuizes(Data data){
getQuizesTableModel().setData(data);
}
public void setUsers(Data data){
getUsersTableModel().setData(data);
}
public void setResults(Data data){
getResultsTableModel().setData(data);
}
/**
* @return the tableModel
*/
public UsersTableModel getUsersTableModel() {
return usersTableModel;
}
/**
* @return the quizesTableModel
*/
public QuizesTableModel getQuizesTableModel() {
return quizesTableModel;
}
public ResultsTableModel getResultsTableModel() {
return resultsTableModel;
}
}