Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .classpath
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="lib/jBCrypt-0.4.jar"/>
<classpathentry kind="lib" path="lib/jdatepicker-1.3.4.jar"/>
<classpathentry kind="lib" path="lib/mysql-connector-j-8.4.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
6 changes: 3 additions & 3 deletions .settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.8
Binary file added lib/jdatepicker-1.3.4.jar
Binary file not shown.
Binary file added lib/mysql-connector-j-8.4.0.jar
Binary file not shown.
98 changes: 98 additions & 0 deletions src/client/AssignBox.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package client;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import task.TaskAssignment;

public class AssignBox extends JFrame {
private JList<TaskAssignment> taskList;
private DefaultListModel<TaskAssignment> taskListModel;
private JTextArea taskDetails;
private JButton acceptButton;
private JButton rejectButton;

public AssignBox() {
setTitle("Assigned Tasks");
setSize(400, 300);
setLayout(new BorderLayout());

taskListModel = new DefaultListModel<>();
taskList = new JList<>(taskListModel);
taskList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
taskList.addListSelectionListener(e -> displayTaskDetails());

taskDetails = new JTextArea();
taskDetails.setEditable(false);

acceptButton = new JButton("Accept");
rejectButton = new JButton("Reject");

acceptButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
acceptTask();
}
});

rejectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
rejectTask();
}
});

JPanel buttonPanel = new JPanel();
buttonPanel.add(acceptButton);
buttonPanel.add(rejectButton);

// Set preferred sizes for the list and detail components
taskList.setPreferredSize(new Dimension(200, 150)); // Adjust width and height as needed
taskDetails.setPreferredSize(new Dimension(200, 150)); // Adjust width and height as needed

add(new JScrollPane(taskList), BorderLayout.CENTER);
add(new JScrollPane(taskDetails), BorderLayout.SOUTH);
add(buttonPanel, BorderLayout.NORTH);
}

public void updateTaskList(List<TaskAssignment> tasks) {
System.out.println("add task assignment");
for (TaskAssignment task : tasks) {
taskListModel.addElement(task);
}
}

private void displayTaskDetails() {
TaskAssignment selectedTask = taskList.getSelectedValue();
if (selectedTask != null) {
taskDetails.setText("Name: " + selectedTask.getName() +
"\nStatus: " + selectedTask.getStatus() +
"\nDue Date: " + selectedTask.getYear() + "-" + selectedTask.getMonth() + "-" + selectedTask.getDay() +
"\nContent: " + selectedTask.getContent() +
"\nNotification Date: " + selectedTask.getNotificationYear() + "-" + selectedTask.getNotificationMonth() + "-" + selectedTask.getNotificationDay() +
"\nAssigned By: " + selectedTask.getTaskAssigner());
}
}

private void acceptTask() {
TaskAssignment selectedTask = taskList.getSelectedValue();
if (selectedTask != null) {
Task task = new Task(selectedTask);
MainFrame.tasks.add(task);
MainFrame.tasksNumber++;
MainFrame.refreshMainFrame();
taskListModel.removeElement(selectedTask);
taskDetails.setText("");
}
}

private void rejectTask() {
TaskAssignment selectedTask = taskList.getSelectedValue();
if (selectedTask != null) {
taskListModel.removeElement(selectedTask);
taskDetails.setText("");
}
}
}
37 changes: 37 additions & 0 deletions src/client/ChatForm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package client;

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.io.BufferedReader;
import java.util.HashMap;

public class ChatForm extends JFrame implements ActionListener {
private DataOutputStream serverOut;
private ClientInfo info;
private HashMap<String, String> textTable = new HashMap<String, String>();

public ChatForm(DataOutputStream serverOut, ClientInfo info) {
this.info = info;
this.serverOut = serverOut;
setupUI();
}


public void actionPerformed(ActionEvent e) {
this.setVisible(true);
}

private void setupUI() {

}

public void updateUI() {

}

}
15 changes: 15 additions & 0 deletions src/client/Client.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package client;

public class Client {
public static final String SERVER_ADDRESS = "localhost";
public static final int SERVER_PORT = 8000;
private static ClientInfo info = new ClientInfo();

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new LoginForm(info).setVisible(true);
}
});
}
}
18 changes: 18 additions & 0 deletions src/client/ClientInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package client;

public class ClientInfo {
private String sessionId;

public ClientInfo() {
this.sessionId = null;
}

public String getSessionId() {
return this.sessionId;
}

public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}

}
54 changes: 54 additions & 0 deletions src/client/ConfirmWindow.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package client;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ConfirmWindow extends JFrame implements ActionListener{
private BufferedReader serverIn;
private DataOutputStream serverOut;
private ClientInfo info;
private Socket socket;

public ConfirmWindow(DataOutputStream serverOut, BufferedReader serverIn, ClientInfo info, Socket socket) {
this.serverIn = serverIn;
this.serverOut = serverOut;
this.info = info;
this.socket = socket;

setSize(200, 100);
setLayout(new BorderLayout());
JLabel confirmLabel = new JLabel("Are you sure you want to exit?");
add(confirmLabel, BorderLayout.CENTER);
JButton exitButton = new JButton("Yes");
exitButton.addActionListener(this);
add(exitButton, BorderLayout.SOUTH);
}

public void actionPerformed(ActionEvent e) {
handleExit();
System.exit(0);
}

private synchronized void handleExit() {
try {
serverOut.writeBytes("EXIT " + info.getSessionId() + "\n");
System.out.println("Closing connection...");
socket.close();

// Dispose of the frame and exit the application
dispose();
System.exit(0);
} catch (IOException e) {

}
}
}
26 changes: 26 additions & 0 deletions src/client/DateLabelFormatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package client;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFormattedTextField.AbstractFormatter;

public class DateLabelFormatter extends AbstractFormatter {

private String datePattern = "yyyy-MM-dd";
private SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);

@Override
public Object stringToValue(String text) throws ParseException {
return dateFormatter.parseObject(text);
}

@Override
public String valueToString(Object value) throws ParseException {
if (value != null) {
Calendar cal = (Calendar) value;
return dateFormatter.format(cal.getTime());
}
return "";
}
}
Loading