package com.wxq.apsv.controller; import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.core.GridLayoutManager; import com.wxq.apsv.interfaces.*; import com.wxq.apsv.enums.*; import com.wxq.apsv.model.RunTasksModel; import com.wxq.apsv.model.TaskListModel; import com.wxq.apsv.view.OrderListTable; import com.wxq.apsv.view.OrderActionsColumn; import com.wxq.apsv.view.TaskDetailPane; import com.wxq.apsv.worker.ApsvRepushTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; public class TaskDetailController extends JPanel implements TabController { private final static Logger logger = LoggerFactory.getLogger(TaskDetailController.class); private TaskListModel taskListModel; private RunTasksModel runTasksModel; private TaskDetailPane taskDetailPane; private OrderListTable orderListTable; public TaskDetailController() { this.InitModels(); this.InitViews(); this.InitListeners(); } @Override public WinTab getTabType() { return WinTab.TASKSTATUS; } private void InitModels() { taskListModel = TaskListModel.getInstance(); runTasksModel = RunTasksModel.getInstance(); } private void InitViews() { setLayout(new GridLayoutManager(1, 1, new Insets(10, 10, 10, 10), -1, -1)); taskDetailPane = new TaskDetailPane(runTasksModel); add(taskDetailPane, new GridConstraints(0, 0, 1, 1, 0, 3, 1|2, 1|2, null, null, null, 0, false)); InitOrderListTable(); } private void InitOrderListTable() { // 订单列表Table this.orderListTable = new OrderListTable(); JScrollPane scrollPane = new JScrollPane(orderListTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); taskDetailPane.getBotWrapperPanel().add(scrollPane, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(600, 50), null, 0, false)); this.orderListTable.setAutoCreateColumnsFromModel(true); // Data Rows orderListTable.setModel(new DefaultTableModel(null, orderListTable.getColumns())); // Actions new OrderActionsColumn(orderListTable, orderListTable.getColumns().length - 1, (ActionEvent e, int row, int column, OrderAction action) -> { logger.info("row {} col {} action {}", row, column, action); }); // 注册Observer runTasksModel.RegisterObserver(orderListTable); } private void InitListeners() { taskListModel.RegisterObserver(taskDetailPane); runTasksModel.RegisterObserver(taskDetailPane); taskDetailPane.getRunBtn().addActionListener((ActionEvent e) -> { Toolkit.getDefaultToolkit().beep(); runTasksModel.SwitchTaskStatus(); }); taskDetailPane.getTaskSelector().addItemListener((ItemEvent e) -> { if (e.getStateChange() == ItemEvent.SELECTED) { runTasksModel.SelectTask(e.getItem().toString()); } }); // order repush action this.orderListTable.addColumnActionListener((ActionEvent e, int row, int column, OrderAction action) -> { logger.info("row {} col {} action {}", row, column, action); if (column != orderListTable.getColumns().length - 1) { return; } if (action == OrderAction.REPUSH) { // repush new java.util.Timer().schedule(new ApsvRepushTask(runTasksModel.getCurrentSelectTask(), runTasksModel.getOrders().get(row)), 1000); } }); } }