7 public class spiderframe extends Frame {
10 public spiderframe(spiderclient parent) {
12 super("Spider DX Cluster");
14 this.setFont(OutFont);
16 menubar = new MenuBar();
17 file = new Menu("File");
18 file.add(connect_menuitem);
19 file.add(new MenuItem("About"));
20 file.add(new MenuItem("Quit"));
21 if (Call.equals("NOCALL")) connect_menuitem.disable();
24 edit = new Menu("Edit");
25 edit.add(copy_menuitem);
26 edit.add(paste_menuitem);
27 copy_menuitem.disable();
28 paste_menuitem.disable();
33 // settings = new Menu("Preferences");
34 // settings.add(new MenuItem("Personal preferences ..."));
35 // menubar.add(settings);
39 commands = new Menu("Commands");
40 commands.add(new MenuItem("Help"));
41 commands.add(new MenuItem("Bye"));
42 menubar.add(commands);
44 show = new Menu("Show");
45 show.add(new MenuItem("Show Last DX"));
46 show.add(new MenuItem("Show Beam Direction"));
47 show.add(new MenuItem("Show wwv"));
48 show.add(new MenuItem("Search DX"));
49 show.add(new MenuItem("Search Address"));
50 show.add(new MenuItem("Search QSL Manager"));
51 show.add(new MenuItem("Search QSL Info"));
52 show.add(new MenuItem("Search DXCC"));
53 show.add(new MenuItem("Status"));
57 set = new Menu("Settings");
58 set.add(new MenuItem("Set Beep"));
59 set.add(new MenuItem("Set QTH / City"));
60 set.add(new MenuItem("Set Name"));
61 set.add(new MenuItem("Set Locator"));
62 set.add(new MenuItem("Show Personal Settings"));
66 dxann = new Menu("DXannounce");
67 dxann.add(new MenuItem("DXannounce"));
70 mailbox = new Menu("Mailbox");
71 mailbox.add(new MenuItem("Last 50 Msgs"));
72 mailbox.add(new MenuItem("List DX Bulletins"));
81 this.setMenuBar(menubar);
83 setLayout(new BorderLayout());
85 Panel p1 = new Panel();
86 p1.setLayout(new BorderLayout());
88 output = new TextArea();
89 output.setEditable(false);
91 p1.add("Center", output);
92 input = new TextArea(2,80);
93 input.setEditable(false);
94 p1.add("South", input);
98 Panel p2 = new Panel();
99 p2.setLayout(new FlowLayout());
100 connectButton.enable();
101 p2.add(connectButton);
103 disconnectButton.disable();
104 p2.add(disconnectButton);
108 Panel p3 = new Panel();
109 GridBagLayout gbl = new GridBagLayout();
112 GridBagConstraints gbc = new GridBagConstraints();
115 gbc.fill = GridBagConstraints.HORIZONTAL;
116 gbc.anchor = GridBagConstraints.CENTER;
118 add(p3,DateLabel,gbl, gbc, 0, 0, 1, 1);
119 add(p3,IdleLabel, gbl, gbc, 2, 0, 2, 1);
120 add(p3,connectState,gbl, gbc, 4, 0, 2, 1);
127 setDate time = new setDate(this);
128 idle = new idleTime(this);
133 private void add(Panel p,Component c, GridBagLayout gbl,
134 GridBagConstraints gbc,
135 int x, int y, int w, int h) {
141 gbl.setConstraints(c, gbc);
145 public void setColors() {
146 output.setBackground(OutBackgroundColor);
147 output.setForeground(OutForegroundColor);
148 input.setBackground(InBackgroundColor);
149 input.setForeground(InForegroundColor);
152 public void setFonts() {
153 output.setFont(OutFont);
154 input.setFont(InFont);
157 public void initPrintStream(PrintStream out) {
161 public void setText(String s) {
164 for (i=0; i < s.length(); i++) {
165 if (s.charAt(i) == '\007')
168 output.appendText(s +'\n');
172 public void setCall(String s) {
176 public void setPassword(String s) {
180 public void setPrefix(String s) {
186 public void setCall2(String s) {
190 public void setFreq(String s) {
195 public void setRemarks(String s) {
202 public void setTime(String s) {
203 DateLabel.setText(s);
206 public void setIdle(String s) {
207 IdleLabel.setText(s);
210 public String getCall() {
214 public String getPassword() {
218 public String setPrefix(){
222 public String setCall2(){
226 public String setFreq(){
230 public String setRemarks(){
238 public void setFullname(String s) {
240 if (Call.equals("NOCALL"))
241 connect_menuitem.disable();
243 connect_menuitem.enable();
246 public String getFullname() {
250 public void setHostname(String s) {
254 public String getHostname() {
258 public void setPort(String s) {
262 public String getPort() {
266 public void setChannel(String s) {
270 public String getChannel() {
274 // public void login() {
275 // PersonalPreferences pp = new PersonalPreferences(this, Call, Fullname, OutFont);
278 public void antrichtung () {
279 beam pp = new beam (this, Prefix,OutFont);
282 public void dxannounce () {
283 dxannounce pp = new dxannounce (this, Call2, Freq, Remarks, OutFont);
291 public boolean handleEvent(Event evt) {
292 if (evt.id == Event.KEY_PRESS) {
293 if (evt.key == '\n') {
298 output.appendText(input.getText()+'\n');
299 out.println(input.getText());
302 if (MaxInputPos < 255) {
308 for(int i=0; i < 254; i++) {
309 InputBuffer[i] = new String(InputBuffer[i+1]);
314 InputBuffer[InputPos-1] = new String(input.getText());
318 } else if (evt.id == Event.KEY_ACTION) {
319 if (evt.key == Event.UP) {
322 input.setText(InputBuffer[InputPos]);
326 else if (evt.key == Event.DOWN) {
327 if (InputPos < MaxInputPos) {
329 input.setText(InputBuffer[InputPos]);
339 return super.handleEvent(evt);
342 public synchronized void show() {
347 public void setUserColor(Color c, String whichColor) {
348 if (whichColor.equals("Output Background ...")) {
349 OutBackgroundColor = c;
351 else if (whichColor.equals("Output Foreground ...")) {
352 OutForegroundColor = c;
353 } else if (whichColor.equals("Input Background ...")) {
354 InBackgroundColor = c;
356 else if (whichColor.equals("Input Foreground ...")) {
357 InForegroundColor = c;
358 } else if (whichColor.equals("Output own text ...")) {
366 public void connected() {
367 connect_menuitem.setLabel("Disconnect");
368 connectState.setText("Connected to "+Hostname+":"+Port);
369 input.setEditable(true);
370 copy_menuitem.enable();
372 connectButton.disable();
373 disconnectButton.enable();
376 public void disconnected() {
378 connect_menuitem.setLabel("Connect");
379 connectState.setText("Disconnected from "+Hostname);
380 input.setEditable(false);
381 copy_menuitem.disable();
382 paste_menuitem.disable();
383 connectButton.enable();
384 disconnectButton.disable();
387 public void setUserFont(String name, int size, int style,
389 if (whichFont.equals("Area ...")) {
390 OutFont = new Font(name, style, size);
392 else if (whichFont.equals("Input Line ...")) {
393 InFont = new Font(name, style, size);
400 public void getSelectedText() {
401 CopyPaste = new String(output.getSelectedText());
402 paste_menuitem.enable();
405 public boolean action(Event evt, Object arg) {
406 if (evt.target instanceof MenuItem) {
407 if (arg.equals("Quit")) {
409 // } else if (arg.equals("Personal preferences ...")) {
410 // PersonalPreferences pp = new PersonalPreferences(this,
411 // Call, Fullname, OutFont);
412 } else if (arg.equals("Connect")) {
414 } else if (arg.equals("Disconnect")) {
415 parent.dodisconnect();
416 } else if (arg.equals("About")) {
417 InfoDialog id = new InfoDialog(this, "About",
418 "JAVA Spider Webclient 0.6b\nPA4AB\n" +
419 "pa4ab@pa4ab.net \n" +
421 "Based on source of the CLX Client from dl6dbh" );
425 } else if (arg.equals("Copy")) {
427 } else if (arg.equals("Paste")) {
428 input.insertText(CopyPaste,input.getSelectionStart());
429 } else if (arg.equals("Bye")) {
430 if (Connected) out.println("bye");
431 } else if (arg.equals("Help")) {
432 if (Connected) out.println("help overview");
433 } else if (arg.equals("Show Last DX")) {
434 if (Connected) out.println("sh/dx");
435 } else if (arg.equals("Status")) {
436 if (Connected) out.println("sh/conf");
437 } else if (arg.equals("Show WWV")) {
438 if (Connected) out.println("sh/wwv");
439 } else if (arg.equals("Show Beam Direction")) {
440 beam pp = new beam(this, Prefix, OutFont);
441 if (Connected) out.println ("sh/heading " + Prefix );
442 } else if (arg.equals("search DX")) {
443 beam pp = new beam(this, Prefix, OutFont);
444 if (Connected) out.println ("sh/dx " + Prefix );
446 } else if (arg.equals("Search QSL Info")) {
447 beam pp = new beam(this, Prefix, OutFont);
448 if (Connected) out.println ("sh/qsl " + Prefix );
451 } else if (arg.equals("search Adress")) {
452 beam pp = new beam(this, Prefix, OutFont);
453 if (Connected) out.println ("sh/qrz " + Prefix );
456 } else if (arg.equals("search qsl Manager")) {
457 beam pp = new beam(this, Prefix, OutFont);
458 if (Connected) out.println ("sh/qsl " + Prefix );
461 } else if (arg.equals("search DXCC")) {
462 beam pp = new beam(this, Prefix, OutFont);
463 if (Connected) out.println ("sh/dxcc " + Prefix );
467 } else if (arg.equals("Set Beep")) {
468 if (Connected) out.println("set/Beep");
470 }else if (arg.equals("Set QTH / City")) {
471 beam pp = new beam(this, Prefix, OutFont);
472 if (Connected) out.println ("set/qth " + Prefix );
475 }else if (arg.equals("Set Name")) {
476 beam pp = new beam(this, Prefix, OutFont);
477 if (Connected) out.println ("set/name " + Prefix );
480 else if (arg.equals("Set Locator")) {
481 beam pp = new beam(this, Prefix, OutFont);
482 if (Connected) out.println ("set/loc " + Prefix );
486 else if (arg.equals("Show Personal Settings")) {
487 if (Connected) out.println ("show/sta " + Call );
494 else if (arg.equals("DXannounce")) {
495 dxannounce pp = new dxannounce(this, Call2, Freq, Remarks, OutFont);
496 if (Connected) out.println ("dx " + Call2 + " " + Freq + " " + Remarks );
500 else if (arg.equals("last 50 Msgs")) {
501 if (Connected) out.println ("dir/50 " );
503 else if (arg.equals("list DX Bulletins")) {
504 if (Connected) out.println ("dir/bul " );
506 else if (arg.equals("new Msgs")) {
507 if (Connected) out.println ("dir/new " );
509 else if (arg.equals("own Msgs")) {
510 if (Connected) out.println ("dir/own " );
517 else if (evt.target instanceof Button) {
518 if (arg.equals("Connect")) {
522 } else if (arg.equals("Disconnect")) {
524 parent.dodisconnect();
534 private idleTime idle;
536 private TextArea input;
537 private TextArea output;
538 private MenuBar menubar;
541 private Menu settings;
544 private Menu commands;
548 private Menu mailbox;
551 private MenuItem connect_menuitem = new MenuItem("Connect");
552 private MenuItem copy_menuitem = new MenuItem("Copy");
553 private MenuItem paste_menuitem = new MenuItem("Paste");
555 private Button connectButton = new java.awt.Button("Connect");
556 private Button disconnectButton = new java.awt.Button("Disconnect");
558 private Date today = new Date();
559 private Label DateLabel = new Label(today.toLocaleString());
560 private Label IdleLabel = new Label("00:00");
561 private Label connectState = new Label("not connected");
564 private Color OutBackgroundColor = new Color(0,0,66);
565 private Color OutForegroundColor = new Color(255,255,0);
566 private Color OutOwnColor = Color.red;
567 private Color InBackgroundColor = new Color(234,199,135);
568 private Color InForegroundColor = Color.red;
570 private Font OutFont = new Font("Courier", Font.PLAIN, 13);
571 private Font InFont = new Font("Courier", Font.BOLD, 13);
573 private String Call = new String("NOCALL");
574 private String Password = new String();
575 private String Fullname = new String("NOBODY");
576 private String Hostname = new String("localhost");
577 private String Port = new String("3600");
578 private String Channel = new String("0");
581 private String Prefix = new String ("");
582 private String Call2 = new String ("");
583 private String Freq = new String ("");
584 private String Remarks = new String ("");
592 private PrintStream out = null;
594 private String InputBuffer[] = new String[256];
595 private int InputPos = 0;
596 private int MaxInputPos = 0;
598 private String CopyPaste;
600 private boolean Connected;
602 private spiderclient parent;
606 class setDate extends Thread {
610 public setDate(spiderframe cf) {
617 try { sleep(1000); } catch (InterruptedException e) {}
619 cf.setTime(today.toLocaleString());
623 private Date today = new Date();
628 class idleTime extends Thread {
633 public idleTime(spiderframe cf) {
639 public void resetTimer() {
646 try { sleep(1000); } catch (InterruptedException e) {}
648 String sec = new Format("%02d").form(count % 60);
649 String min = new Format("%02d").form(count / 60);
650 cf.setIdle("Idle: "+min+":"+sec);