moodle/mod/chat/gui_java/MainFrameGui.java
moodler 1515a89e2d Very early version of new chat module, made by Martin using ARSC as
an inspiration.

Works OK already on most newish browsers .. see mod/chat/README.txt for details.
2003-07-07 06:44:16 +00:00

178 lines
4.5 KiB
Java

import java.awt.*;
import java.awt.event.*;
public class MainFrameGui
extends Frame
{
public static TextArea messages;
public static TextField eingabe;
public static List userliste;
public static Checkbox cb;
public static Button hilfebutton;
public static GridBagConstraints makegbc;
public static TextDialog hilfedialog;
public static MenuBar menu;
public MainFrameGui()
{
super ("ARSC Really Simple Chat");
setBackground(Color.lightGray);
addWindowListener(new WindowClosingAdapter(true));
//Menü
MenuBar menu = new MenuBar();
Menu menuConnection = new Menu("Connection");
menuConnection.add("Connect to server");
menuConnection.add("Disconnect from server");
menuConnection.add("Quit");
Menu menuConfiguration = new Menu("Configuration");
Menu menuHelp = new Menu("Help");
MenuItem mi = new MenuItem("Show commands");
mi.addActionListener(new hilfebuttonListener());
menuHelp.add(mi);
menuHelp.add("About...");
menu.add(menuConnection);
menu.add(menuConfiguration);
menu.add(menuHelp);
setMenuBar(menu);
//Layout setzen und Komponenten hinzufügen
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc;
setLayout(gbl);
//TextArea hinzufügen
messages = new TextArea("", 20, 20, TextArea.SCROLLBARS_VERTICAL_ONLY);
gbc = makegbc(0, 0, 2, 2);
gbc.weightx = 100;
gbc.weighty = 100;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(messages, gbc);
add(messages);
//Userliste
userliste = new List();
userliste.add("pgod");
userliste.add("HanSolo");
userliste.add("dArUdE");
gbc = makegbc(2, 0, 2, 2);
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(userliste, gbc);
userliste.addActionListener(new userlisteListener());
add(userliste);
//Eingabefeld
eingabe = new TextField();
gbc = makegbc(0, 2, 1, 1);
gbc.weightx = 100;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.SOUTH;
gbl.setConstraints(eingabe, gbc);
eingabe.addActionListener(new eingabeListener());
add(eingabe);
//Checkbox
cb = new Checkbox("Scrolling");
cb.setState(true);
gbc = makegbc(1, 2, 1, 1);
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.SOUTH;
gbl.setConstraints(cb, gbc);
add(cb);
//Hilfebutton
hilfebutton = new Button("Help");
gbc = makegbc(2, 2, 1, 1);
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.WEST;
gbl.setConstraints(hilfebutton, gbc);
hilfebutton.addActionListener(new hilfebuttonListener());
add(hilfebutton);
//Gib ihm
pack();
hilfedialog = new TextDialog(this, "Hilfe", "Hilfe\nLala\nLulu...", "Schliessen", false, 200, 400);
}
//Die Listener
public class eingabeListener
implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("Event erhalten");
TextField source = (TextField)event.getSource();
messages.append("\n" + source.getText());
source.selectAll();
}
}
public class userlisteListener
implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("userliste Event erhalten");
List source = (List)event.getSource();
eingabe.setText("/msg " + source.getSelectedItem() + " ");
eingabe.setCaretPosition(99);
eingabe.requestFocus();
}
}
public class hilfebuttonListener
implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("hilfebutton Event erhalten");
if(getToolkit().getScreenSize().width - (getBounds().x + getBounds().width) >= hilfedialog.getSize().width)
{
hilfedialog.setLocation(getBounds().x + getBounds().width, getBounds().y);
}
else
{
hilfedialog.setLocation(getToolkit().getScreenSize().width - hilfedialog.getSize().width, getBounds().y);
}
hilfedialog.setVisible(true);
}
}
public class WindowClosingAdapter
extends WindowAdapter
{
private boolean exitSystem;
public WindowClosingAdapter(boolean exitSystem)
{
this.exitSystem = exitSystem;
}
public WindowClosingAdapter()
{
this(true);
}
public void windowClosing(WindowEvent event)
{
event.getWindow().setVisible(false);
event.getWindow().dispose();
if (exitSystem)
{
System.exit(0);
}
}
}
public static GridBagConstraints makegbc(int x, int y, int width, int height)
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.insets = new Insets(1, 1, 1, 1);
return gbc;
}
}