Browse Source
Merge branch 'server' into 'main'
Merge branch 'server' into 'main'
Server See merge request fdai7332/java-chat!10remotes/origin/server
fdai7599
11 months ago
4 changed files with 240 additions and 0 deletions
-
144src/main/java/ChatGUI.java
-
6src/main/java/ClientHandler.java
-
80src/test/java/ChatGUITest.java
-
10src/test/java/TestActionEvent.java
@ -0,0 +1,144 @@ |
|||||
|
import java.awt.BorderLayout; |
||||
|
import java.awt.Color; |
||||
|
import java.awt.Dimension; |
||||
|
import java.awt.Font; |
||||
|
import java.awt.Toolkit; |
||||
|
import java.awt.event.ActionEvent; |
||||
|
import java.awt.event.ActionListener; |
||||
|
|
||||
|
import javax.swing.JButton; |
||||
|
import javax.swing.JFrame; |
||||
|
import javax.swing.JMenu; |
||||
|
import javax.swing.JMenuBar; |
||||
|
import javax.swing.JMenuItem; |
||||
|
import javax.swing.JPanel; |
||||
|
import javax.swing.JScrollPane; |
||||
|
import javax.swing.JTextArea; |
||||
|
import javax.swing.JTextField; |
||||
|
|
||||
|
public class ChatGUI implements ActionListener { |
||||
|
|
||||
|
// Menu items for font sizes |
||||
|
JMenuItem small = new JMenuItem("small-font"); |
||||
|
JMenuItem medium = new JMenuItem("medium-font"); |
||||
|
JMenuItem large = new JMenuItem("large-font"); |
||||
|
|
||||
|
// Menu items for font colors |
||||
|
JMenuItem black = new JMenuItem("black"); |
||||
|
JMenuItem red = new JMenuItem("red"); |
||||
|
JMenuItem blue = new JMenuItem("blue"); |
||||
|
JMenuItem green = new JMenuItem("green"); |
||||
|
|
||||
|
JMenuItem exit = new JMenuItem("Exit"); |
||||
|
|
||||
|
JTextField inputTextField = new JTextField(); |
||||
|
JTextArea outputTextArea = new JTextArea(); |
||||
|
JButton sendButton = new JButton("Senden"); |
||||
|
|
||||
|
JFrame gui; |
||||
|
|
||||
|
public ChatGUI() { |
||||
|
gui = new JFrame(); |
||||
|
|
||||
|
// Set up the main frame |
||||
|
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
||||
|
gui.setTitle("java-chat"); |
||||
|
gui.setLayout(new BorderLayout()); |
||||
|
|
||||
|
// Set up the menu bar |
||||
|
JMenuBar bar = new JMenuBar(); |
||||
|
gui.setJMenuBar(bar); |
||||
|
|
||||
|
// Create menu items and menus |
||||
|
JMenu options = new JMenu("options"); |
||||
|
JMenu colors = new JMenu("font-colors"); |
||||
|
JMenu size = new JMenu("font-size"); |
||||
|
|
||||
|
JMenu menu = new JMenu("File"); |
||||
|
menu.add(exit); |
||||
|
menu.add(options); |
||||
|
bar.add(menu); |
||||
|
options.add(colors); |
||||
|
options.add(size); |
||||
|
|
||||
|
colors.add(black); |
||||
|
colors.add(red); |
||||
|
colors.add(blue); |
||||
|
colors.add(green); |
||||
|
|
||||
|
size.add(small); |
||||
|
size.add(medium); |
||||
|
size.add(large); |
||||
|
|
||||
|
// Register action listeners for menu items |
||||
|
red.addActionListener(this); |
||||
|
blue.addActionListener(this); |
||||
|
black.addActionListener(this); |
||||
|
green.addActionListener(this); |
||||
|
small.addActionListener(this); |
||||
|
medium.addActionListener(this); |
||||
|
large.addActionListener(this); |
||||
|
|
||||
|
exit.addActionListener(this); |
||||
|
|
||||
|
bar.add(menu); |
||||
|
|
||||
|
// Set up the output text area with scrolling |
||||
|
JScrollPane outputScrollPane = new JScrollPane(outputTextArea); |
||||
|
gui.add(outputScrollPane, BorderLayout.CENTER); |
||||
|
|
||||
|
// Set up the input panel with text field and send button |
||||
|
JPanel inputPanel = new JPanel(new BorderLayout()); |
||||
|
inputPanel.add(inputTextField, BorderLayout.CENTER); |
||||
|
inputPanel.add(sendButton, BorderLayout.EAST); |
||||
|
gui.add(inputPanel, BorderLayout.SOUTH); |
||||
|
|
||||
|
inputTextField.addActionListener(this); |
||||
|
sendButton.addActionListener(this); |
||||
|
|
||||
|
// Set the size of the GUI to be a quarter of the screen size |
||||
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
||||
|
int quarterWidth = screenSize.width / 2; |
||||
|
int quarterHeight = screenSize.height / 2; |
||||
|
gui.setSize(quarterWidth, quarterHeight); |
||||
|
gui.setVisible(true); |
||||
|
} |
||||
|
|
||||
|
// main methode zum Testen, müsste bei Implementation entfernt werden |
||||
|
public static void main(String[] args) { |
||||
|
|
||||
|
new ChatGUI(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void actionPerformed(ActionEvent e) { |
||||
|
if (e.getSource() == exit) { |
||||
|
System.exit(0); |
||||
|
} |
||||
|
if (e.getSource() == inputTextField || e.getSource() == sendButton) { |
||||
|
String inputText = inputTextField.getText(); |
||||
|
outputTextArea.append(inputText + "\n"); |
||||
|
inputTextField.setText(""); |
||||
|
} |
||||
|
if (e.getSource() == red) { |
||||
|
outputTextArea.setForeground(Color.RED); |
||||
|
|
||||
|
} else if (e.getSource() == blue) { |
||||
|
outputTextArea.setForeground(Color.BLUE); |
||||
|
} else if (e.getSource() == black) { |
||||
|
outputTextArea.setForeground(Color.BLACK); |
||||
|
} else if (e.getSource() == green) { |
||||
|
outputTextArea.setForeground(Color.GREEN); |
||||
|
} |
||||
|
if (e.getSource() == small) { |
||||
|
outputTextArea.setFont(outputTextArea.getFont().deriveFont(Font.PLAIN, 12)); |
||||
|
} |
||||
|
if (e.getSource() == medium) { |
||||
|
outputTextArea.setFont(outputTextArea.getFont().deriveFont(Font.PLAIN, 16)); |
||||
|
} |
||||
|
if (e.getSource() == large) { |
||||
|
outputTextArea.setFont(outputTextArea.getFont().deriveFont(Font.PLAIN, 20)); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,80 @@ |
|||||
|
import static org.junit.Assert.assertEquals; |
||||
|
|
||||
|
import java.awt.Color; |
||||
|
import java.awt.Font; |
||||
|
import java.awt.event.ActionEvent; |
||||
|
|
||||
|
import org.junit.Before; |
||||
|
import org.junit.Test; |
||||
|
|
||||
|
public class ChatGUITest { |
||||
|
|
||||
|
private ChatGUI chatGUI; |
||||
|
|
||||
|
@Before |
||||
|
public void setUp() { |
||||
|
chatGUI = new ChatGUI(); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextColorRed() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.red)); |
||||
|
assertEquals(Color.RED, chatGUI.outputTextArea.getForeground()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextColorBlue() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.blue)); |
||||
|
assertEquals(Color.BLUE, chatGUI.outputTextArea.getForeground()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextColorBlack() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.black)); |
||||
|
assertEquals(Color.BLACK, chatGUI.outputTextArea.getForeground()); |
||||
|
} |
||||
|
|
||||
|
@Test |
||||
|
public void testSetOutputTextColorGreen() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.green)); |
||||
|
assertEquals(Color.GREEN, chatGUI.outputTextArea.getForeground()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextFontSizeSmall() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.small)); |
||||
|
Font expectedFont = chatGUI.outputTextArea.getFont().deriveFont(Font.PLAIN, 12); |
||||
|
assertEquals(expectedFont, chatGUI.outputTextArea.getFont()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextFontSizeMedium() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.medium)); |
||||
|
Font expectedFont = chatGUI.outputTextArea.getFont().deriveFont(Font.PLAIN, 16); |
||||
|
assertEquals(expectedFont, chatGUI.outputTextArea.getFont()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSetOutputTextFontSizeLarge() { |
||||
|
chatGUI.actionPerformed(new TestActionEvent(chatGUI.large)); |
||||
|
Font expectedFont = chatGUI.outputTextArea.getFont().deriveFont(Font.PLAIN, 20); |
||||
|
assertEquals(expectedFont, chatGUI.outputTextArea.getFont()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testSendButtonActionPerformed() { |
||||
|
chatGUI.inputTextField.setText("Testnachricht"); |
||||
|
chatGUI.sendButton.doClick(); |
||||
|
|
||||
|
String expectedOutput = "Testnachricht\n"; |
||||
|
assertEquals(expectedOutput, chatGUI.outputTextArea.getText()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testInputTextFieldActionPerformed() { |
||||
|
|
||||
|
chatGUI.inputTextField.setText("Testnachricht"); |
||||
|
chatGUI.actionPerformed(new ActionEvent(chatGUI.inputTextField, ActionEvent.ACTION_PERFORMED, "")); |
||||
|
|
||||
|
|
||||
|
String expectedOutput = "Testnachricht\n"; |
||||
|
assertEquals(expectedOutput, chatGUI.outputTextArea.getText()); |
||||
|
|
||||
|
|
||||
|
assertEquals("", chatGUI.inputTextField.getText()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,10 @@ |
|||||
|
import java.awt.event.ActionEvent; |
||||
|
|
||||
|
public class TestActionEvent extends ActionEvent { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
public TestActionEvent(Object source) { |
||||
|
super(source, ActionEvent.ACTION_PERFORMED, "Test command"); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue