package views;
import [Link].*;
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class DeliveryRunnerView extends JFrame {
private DeliveryRunner deliveryRunner;
private OrderService orderService;
private JTextArea orderArea;
private JButton acceptOrderButton;
private JButton rejectOrderButton;
private JButton historyButton;
private JButton backButton;
private UserService userService;
private JFrame previousWindow;
public DeliveryRunnerView(JFrame previousWindow, DeliveryRunner deliveryRunner,
UserService userService) {
[Link] = previousWindow;
[Link] = deliveryRunner;
[Link] = userService;
[Link] = new OrderService(userService); // Initialize OrderService with
UserService
setTitle("Delivery Runner Dashboard");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel topPanel = new JPanel(new BorderLayout());
JLabel titleLabel = new JLabel("Delivery Runner Dashboard", [Link]);
[Link](new Font("Arial", [Link], 24));
[Link](titleLabel, [Link]);
backButton = new JButton("Back");
[Link](new Font("Arial", [Link], 14));
[Link]([Link]);
[Link](new Color(0xDC3545)); // Red
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
[Link](true); // Show the previous window
}
});
[Link](backButton, [Link]);
add(topPanel, [Link]);
orderArea = new JTextArea();
[Link](false);
add(new JScrollPane(orderArea), [Link]);
JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 10, 10));
[Link]([Link](20, 20, 20, 20));
acceptOrderButton = new JButton("Accept Order");
rejectOrderButton = new JButton("Reject Order");
historyButton = new JButton("Order History");
[Link](acceptOrderButton);
[Link](rejectOrderButton);
[Link](historyButton);
add(buttonPanel, [Link]);
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
acceptOrder();
}
});
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
rejectOrder();
}
});
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewOrderHistory();
}
});
setPreferredSize(new Dimension(600, 400)); // Set initial preferred size
pack(); // Adjust the frame to fit the preferred size of its components
setLocationRelativeTo(null); // Center the frame on the screen
setResizable(true); // Allow the frame to be resizable
loadOrders();
}
private void loadOrders() {
[Link](""); // Clear existing orders
List<Order> pendingOrders = [Link]();
for (Order order : pendingOrders) {
[Link]("Order ID: " + [Link]() + "\nCustomer: " +
[Link]().getUsername() + "\nMenuItem: " + [Link]().getName() + "\n\
n");
}
}
private void acceptOrder() {
try {
String orderId = [Link](this, "Enter Order ID to accept:");
if (orderId != null && ![Link]().isEmpty()) {
boolean success = [Link]([Link](orderId),
deliveryRunner);
if (success) {
[Link](this, "Order accepted!");
loadOrders();
} else {
[Link](this, "Error accepting order.");
}
} else {
[Link](this, "Invalid Order ID.");
}
} catch (Exception e) {
[Link](this, "Error accepting order: " + [Link]());
}
}
private void rejectOrder() {
try {
String orderId = [Link](this, "Enter Order ID to reject:");
if (orderId != null && ![Link]().isEmpty()) {
boolean success = [Link]([Link](orderId), deliveryRunner);
if (success) {
[Link](this, "Order rejected.");
loadOrders();
} else {
[Link](this, "Error rejecting order.");
}
} else {
[Link](this, "Invalid Order ID.");
}
} catch (Exception e) {
[Link](this, "Error rejecting order: " + [Link]());
}
}
private void viewOrderHistory() {
try {
List<Order> orderHistory = [Link](deliveryRunner);
[Link](""); // Clear existing orders
for (Order order : orderHistory) {
[Link]("Order ID: " + [Link]() + "\nCustomer: " +
[Link]().getUsername() + "\nMenuItem: " + [Link]().getName() + "\n\
n");
}
} catch (Exception e) {
[Link](this, "Error viewing order history: " +
[Link]());
}
}
public static void main(String[] args) {
DeliveryRunner deliveryRunner = new DeliveryRunner("runner_username",
"runner_password", "RunnerFirstName", "RunnerLastName", "RunnerContact",
"RunnerEmail");
UserService userService = new UserService();
[Link](() -> new DeliveryRunnerView(null, deliveryRunner,
userService).setVisible(true));
}
}