java remote access trojanc
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.

100 lines
2.5 KiB

package de.sogomn.rat.server.gui;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.DefaultCaret;
import de.sogomn.engine.util.AbstractListenerContainer;
public final class ChatWindow extends AbstractListenerContainer<IGuiController> {
private Object userObject;
private JFrame frame;
private JTextArea chat;
private JTextField submit;
private JScrollPane scrollPane;
private String message;
private static final Dimension SIZE = new Dimension(500, 500);
private static final String USER_PREFIX = "You: ";
public static final String MESSAGE_SENT = "Message sent";
public ChatWindow(final Object userObject) {
this.userObject = userObject;
frame = new JFrame();
chat = new JTextArea();
submit = new JTextField();
scrollPane = new JScrollPane(chat, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
final Container contentPane = frame.getContentPane();
final DefaultCaret caret = (DefaultCaret)chat.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
submit.addActionListener(this::messageSubmitted);
chat.setEditable(false);
chat.setLineWrap(true);
chat.setWrapStyleWord(true);
contentPane.add(scrollPane, BorderLayout.CENTER);
contentPane.add(submit, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setPreferredSize(SIZE);
frame.setIconImages(RattyGui.GUI_ICONS);
frame.pack();
frame.setLocationRelativeTo(null);
}
private void messageSubmitted(final ActionEvent a) {
final String message = submit.getText();
if (!message.isEmpty()) {
this.message = message;
notifyListeners(controller -> controller.userInput(MESSAGE_SENT, userObject));
addLine(USER_PREFIX + message);
}
submit.setText("");
}
public void close() {
frame.setVisible(false);
frame.dispose();
}
public void addLine(final String line) {
chat.append(line + "\r\n");
}
public void setVisible(final boolean visible) {
frame.setVisible(visible);
}
public void setTitle(final String title) {
frame.setTitle(title);
}
public String getMessage() {
return message;
}
public boolean isVisible() {
return frame.isVisible();
}
}