[Jcrossclient-cvs] jcrossclient ContainerWin.java,NONE,1.1 CFclient.java,1.36,1.37 Changelog,1.43,1.
Status: Alpha
Brought to you by:
cavesomething
From: <jcr...@li...> - 2006-04-19 12:57:24
|
Update of /cvsroot/jcrossclient/jcrossclient In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14626 Modified Files: CFclient.java Changelog Metaserver.java Settings.java TabPanel.java Added Files: ContainerWin.java Log Message: add a URL bar to the metaserver list, actually commit the container window code (mostly) remove some deprecated stuff Index: Settings.java =================================================================== RCS file: /cvsroot/jcrossclient/jcrossclient/Settings.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Settings.java 1 Feb 2006 19:14:29 -0000 1.6 --- Settings.java 19 Apr 2006 12:57:15 -0000 1.7 *************** *** 146,150 **** void saveSettings () { try { ! val.save(new FileOutputStream(rcfilename),"java crossfire rc file"); } catch (IOException e) { --- 146,150 ---- void saveSettings () { try { ! val.store(new FileOutputStream(rcfilename),"java crossfire rc file"); } catch (IOException e) { Index: Changelog =================================================================== RCS file: /cvsroot/jcrossclient/jcrossclient/Changelog,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Changelog 15 Apr 2006 17:45:00 -0000 1.43 --- Changelog 19 Apr 2006 12:57:15 -0000 1.44 *************** *** 316,317 **** --- 316,328 ---- CFClient - container support + + 19/04/2006 - ContainerWin - actually commit this file (after having deleted all copies and rewriting it) + + TabPanel - replace some deprecated code + + Settings - replace some deprecated code + + Metaserver - move more of the metaserver logic into this file, + - add a URL bar to allow connecting to arbitrary servers + + CFClient - removal of some metaserver-related code from here. Index: Metaserver.java =================================================================== RCS file: /cvsroot/jcrossclient/jcrossclient/Metaserver.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Metaserver.java 25 Mar 2006 01:25:42 -0000 1.3 --- Metaserver.java 19 Apr 2006 12:57:15 -0000 1.4 *************** *** 102,171 **** } ! ! class Metaserver extends Canvas implements MouseListener, MouseMotionListener { int objpixheight=MapWin.pixheight+8; ! CFclient toplevel; ! Socket metaserver; ! BufferedReader server_data; ! ! Vector Servers; ! int serversize=0; ! public Metaserver(CFclient tl) { ! toplevel = tl; addMouseListener(this); addMouseMotionListener(this); - Servers = new Vector(); - } - - /* open a socket to the metaserver, parse the data recieved, and update the server list */ - public void sync_to_metaserver() { - Servers = new Vector(); /* we need to dump the old data */ - try { - metaserver = new Socket("crossfire.real-time.com", 13326); - server_data = new BufferedReader(new - InputStreamReader(metaserver.getInputStream())); - parse_metaserver(); - metaserver.close(); - } catch(UnknownHostException e) { - debug("can't connect to metaserver"); - return; - } catch (IOException e) { - debug("socket i/o error:"+e.getMessage()); - return; - } - } - - /* read in the data on the socket, and populate the server list */ - void parse_metaserver() throws IOException { - String current_server; - StringTokenizer parser; - ServerData new_server; - while ((current_server = server_data.readLine()) != null) { - new_server = new ServerData(); - try { - parser = new StringTokenizer(current_server, "|"); - new_server.setIP(parser.nextToken()); - new_server.setUpdateTime(parser.nextToken()); - new_server.setHostname(parser.nextToken()); - new_server.setPlayerCount(parser.nextToken()); - new_server.setVersion(parser.nextToken()); - new_server.setComment(parser.nextToken()); - new_server.setBytesIn(parser.nextToken()); - new_server.setBytesOut(parser.nextToken()); - new_server.setUptime(parser.nextToken()); - Servers.add(new_server); - System.out.println("new server " + new_server.hostname + " with " - + new_server.player_count + " players"); - } - catch (NoSuchElementException e) { - /* try and add the server anyway, we might have enough data to be useful */ - Servers.add(new_server); - System.out.println("broken server " + new_server.hostname + " with " - + new_server.player_count + " players"); - } - } - Collections.sort(Servers, new ServerCompare()); - toplevel.showmap("metaserver"); } --- 102,113 ---- } ! class Metaserverlist extends Canvas implements MouseListener, MouseMotionListener { int objpixheight=MapWin.pixheight+8; ! Metaserver mspanel; ! public Metaserverlist(Metaserver ms) { ! mspanel=ms; addMouseListener(this); addMouseMotionListener(this); } *************** *** 190,195 **** void debug(String msg) { ! if(toplevel.debugflag) ! System.out.println(msg); } --- 132,136 ---- void debug(String msg) { ! System.out.println(msg); } *************** *** 204,239 **** int buttonmask=evt.getModifiers(); int serverpos=(evt.getY()) / 30; ! if (serverpos > Servers.size() || serverpos <= 0) { ! toplevel.metadesc.setText( "Right Click to join server, Left Click to view Comment"); return; } ! clicked_server = (ServerData)Servers.elementAt(serverpos-1); if ((buttonmask&InputEvent.BUTTON1_MASK)>0) { ! toplevel.metadesc.setText(clicked_server.comment); } else if ((buttonmask&InputEvent.BUTTON3_MASK)>0) { ! toplevel.showmap(); ! toplevel.initConnection(clicked_server.ip_address, clicked_server.hostname); } } ! public void mouseEntered(MouseEvent evt) { ! } ! public void mouseExited(MouseEvent evt) { ! } ! public void mousePressed(MouseEvent evt) { ! } ! public void mouseReleased(MouseEvent evt) { ! } ! public void mouseDragged(MouseEvent evt) { ! } public void mouseMoved(MouseEvent evt) { ServerData clicked_server = null; int serverpos= (evt.getY())/ 30; ! for (int i=0; i < Servers.size(); i++) ! ((ServerData)Servers.elementAt(i)).set_mouse_over(false); ! if (serverpos <= Servers.size() && serverpos > 0) ! ((ServerData)Servers.elementAt(serverpos-1)).set_mouse_over(true); repaint(); } --- 145,175 ---- int buttonmask=evt.getModifiers(); int serverpos=(evt.getY()) / 30; ! if (serverpos > mspanel.Servers.size() || serverpos <= 0) { ! mspanel.setDescText( "Right Click to join server, Left Click to view Comment"); return; } ! clicked_server = (ServerData)mspanel.Servers.elementAt(serverpos-1); if ((buttonmask&InputEvent.BUTTON1_MASK)>0) { ! mspanel.setDescText(clicked_server.comment); ! mspanel.setURL(clicked_server.ip_address); } else if ((buttonmask&InputEvent.BUTTON3_MASK)>0) { ! mspanel.connectTo(clicked_server.ip_address, clicked_server.hostname); } } ! public void mouseEntered(MouseEvent evt) {} ! public void mouseExited(MouseEvent evt) {} ! public void mousePressed(MouseEvent evt) {} ! public void mouseReleased(MouseEvent evt) {} ! public void mouseDragged(MouseEvent evt) {} public void mouseMoved(MouseEvent evt) { ServerData clicked_server = null; int serverpos= (evt.getY())/ 30; ! for (int i=0; i < mspanel.Servers.size(); i++) ! ((ServerData)mspanel.Servers.elementAt(i)).set_mouse_over(false); ! if (serverpos <= mspanel.Servers.size() && serverpos > 0) ! ((ServerData)mspanel.Servers.elementAt(serverpos-1)).set_mouse_over(true); repaint(); } *************** *** 253,263 **** int playersx=fm.stringWidth("Players"); int y_height; ! if (Servers == null) { gc.drawString("(Metaserver window)", 10,10); return; } else { ! for (int i=0; i < Servers.size(); i++) { ! server = (ServerData)Servers.elementAt(i); if (hostnamex < fm.stringWidth(server.hostname)) hostnamex = fm.stringWidth(server.hostname); --- 189,199 ---- int playersx=fm.stringWidth("Players"); int y_height; ! if (mspanel.Servers == null) { gc.drawString("(Metaserver window)", 10,10); return; } else { ! for (int i=0; i < mspanel.Servers.size(); i++) { ! server = (ServerData)mspanel.Servers.elementAt(i); if (hostnamex < fm.stringWidth(server.hostname)) hostnamex = fm.stringWidth(server.hostname); *************** *** 272,278 **** gc.drawString("Uptime", hostnamex +playersx +versionx +18, 10); gc.drawLine(0, 30,1000, 30); ! for (int i=0; i < Servers.size(); i++) { y_height = 30*(i+1) + 18; ! server = (ServerData)Servers.elementAt(i); if (server.get_mouse_over()) gc.setColor(Color.gray); --- 208,214 ---- gc.drawString("Uptime", hostnamex +playersx +versionx +18, 10); gc.drawLine(0, 30,1000, 30); ! for (int i=0; i < mspanel.Servers.size(); i++) { y_height = 30*(i+1) + 18; ! server = (ServerData)mspanel.Servers.elementAt(i); if (server.get_mouse_over()) gc.setColor(Color.gray); *************** *** 290,291 **** --- 226,344 ---- } + class Metaserver extends Panel implements ActionListener { + Vector Servers; + Socket metaserver; + TextArea metadesc; + Panel urlentry; + Button connect; + TextField urlbar; + Metaserverlist mlist; + ScrollPane mscrollp; + CFclient toplevel; + BufferedReader server_data; + int serversize=0; + + public Metaserver(CFclient tl) { + super(new BorderLayout()); + toplevel = tl; + Servers = new Vector(); + metadesc = new TextArea( + "Right Click to join server, Left Click to view Comment", + 4, 60, TextArea.SCROLLBARS_VERTICAL_ONLY); + metadesc.setEditable(false); + mlist = new Metaserverlist(this); + mscrollp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); + /* make the server list occupy ~80% of the map pane, + * the remaining 20% should then go to the description box + */ + mscrollp.setSize(MapWin.pixwidth*MapWin.XMAX, (int)(0.8*MapWin.pixheight*MapWin.YMAX)); + mscrollp.add(mlist); + (mscrollp.getVAdjustable()).setUnitIncrement(10); + urlentry = new Panel(); + urlentry.add(new Label("Hostname/IP")); + urlbar = new TextField(40); + urlentry.add(urlbar); + connect = new Button("Connect"); + connect.addActionListener(this); + urlentry.add(connect); + + /* having defined the metaserver widgets, let's set them up now */ + add(urlentry, BorderLayout.NORTH); + add(mscrollp); + add(metadesc, BorderLayout.SOUTH); + } + + /* open a socket to the metaserver, parse the data recieved, and update the server list */ + public void sync_to_metaserver() { + Servers = new Vector(); /* we need to dump the old data */ + try { + metaserver = new Socket("crossfire.real-time.com", 13326); + server_data = new BufferedReader(new + InputStreamReader(metaserver.getInputStream())); + parse_metaserver(); + metaserver.close(); + } catch(UnknownHostException e) { + debug("can't connect to metaserver"); + return; + } catch (IOException e) { + debug("socket i/o error:"+e.getMessage()); + return; + } + } + + void setDescText(String text) { + metadesc.setText(text); + } + + void setURL(String text) { + urlbar.setText(text); + } + + public void actionPerformed(ActionEvent evt) { + connectTo(urlbar.getText(), urlbar.getText()); + } + + void debug(String msg) { + System.out.println(msg); + } + + /* read in the data on the socket, and populate the server list */ + void parse_metaserver() throws IOException { + String current_server; + StringTokenizer parser; + ServerData new_server; + while ((current_server = server_data.readLine()) != null) { + new_server = new ServerData(); + try { + parser = new StringTokenizer(current_server, "|"); + new_server.setIP(parser.nextToken()); + new_server.setUpdateTime(parser.nextToken()); + new_server.setHostname(parser.nextToken()); + new_server.setPlayerCount(parser.nextToken()); + new_server.setVersion(parser.nextToken()); + new_server.setComment(parser.nextToken()); + new_server.setBytesIn(parser.nextToken()); + new_server.setBytesOut(parser.nextToken()); + new_server.setUptime(parser.nextToken()); + Servers.add(new_server); + System.out.println("new server " + new_server.hostname + " with " + + new_server.player_count + " players"); + } + catch (NoSuchElementException e) { + /* try and add the server anyway, we might have enough data to be useful */ + Servers.add(new_server); + System.out.println("broken server " + new_server.hostname + " with " + + new_server.player_count + " players"); + } + } + Collections.sort(Servers, new ServerCompare()); + toplevel.showmap("metaserver"); + } + + void connectTo(String ipaddress, String hostname) { + toplevel.showmap(); + toplevel.initConnection(ipaddress, hostname); + } + } + + Index: CFclient.java =================================================================== RCS file: /cvsroot/jcrossclient/jcrossclient/CFclient.java,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** CFclient.java 15 Apr 2006 17:45:00 -0000 1.36 --- CFclient.java 19 Apr 2006 12:57:15 -0000 1.37 *************** *** 101,107 **** MagicMap magicmap; Metaserver metaserver; ! public ScrollPane iscrollp, escrollp, sscrollp, spscrollp, mscrollp; ! Panel viewpane, metapanel; ! TextArea metadesc; ServerCon mConnection; --- 101,107 ---- MagicMap magicmap; Metaserver metaserver; ! public ScrollPane iscrollp, escrollp, sscrollp, spscrollp; ! Panel viewpane; ! ServerCon mConnection; *************** *** 1232,1241 **** metaserver = new Metaserver(this); - metapanel = new Panel(new BorderLayout()); - metadesc = new TextArea( - "Right Click to join server, Left Click to view Comment", - 4, 60, TextArea.SCROLLBARS_VERTICAL_ONLY); - metadesc.setEditable(false); - TabPanel leftside = new TabPanel(); Panel topside = new VertPanel(); --- 1232,1235 ---- *************** *** 1249,1253 **** escrollp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); sscrollp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); - mscrollp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); iscrollp.setSize(290,210); --- 1243,1246 ---- *************** *** 1266,1280 **** (spscrollp.getVAdjustable()).setUnitIncrement(10); - /* make the server list occupy ~80% of the map pane, - * the remaining 20% should then go to the description box - */ - mscrollp.setSize(MapWin.pixwidth*MapWin.XMAX, (int)(0.8*MapWin.pixheight*MapWin.YMAX)); - mscrollp.add(metaserver); - (mscrollp.getVAdjustable()).setUnitIncrement(10); - - /* having defined the metaserver widgets, let's set them up now */ - metapanel.add(mscrollp); - metapanel.add(metadesc, BorderLayout.SOUTH); - sscrollp.add(skillwin); items.add(iscrollp); --- 1259,1262 ---- *************** *** 1287,1291 **** viewpane.add("map", mapwin); viewpane.add("magicmap", magicmap); ! viewpane.add("metaserver", metapanel); viewpane.add("container", containerwin); topside.add(viewpane); --- 1269,1273 ---- viewpane.add("map", mapwin); viewpane.add("magicmap", magicmap); ! viewpane.add("metaserver", metaserver); viewpane.add("container", containerwin); topside.add(viewpane); --- NEW FILE: ContainerWin.java --- /* * Copyright (c) 2006, Brendan Lally, bre...@gm... * * This file is part of jcrossclient. * * Jcrossclient is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later version. * * Jcrossclient is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * Jcrossclient; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ import java.awt.*; import java.util.Vector; import java.awt.event.*; /* handles everything related to displaying containers */ class ContainerWin extends Canvas implements MouseListener, ActionListener { PopupMenu item_single, item_plural; int objpixheight=MapWin.pixheight+8; CFclient toplevel; CFObject last_clicked_object; Vector ContainerObjects; int invsize=0; int winwidth=80; // recalc'd every time contents changed // but lets have a reasonable start! public ContainerWin(CFclient tl, Vector objs) { toplevel = tl; ContainerObjects = objs; addMouseListener(this); /* rather than dynamically constructing these menus, we'll * create two, one for the single item case, one for the stack * of items case. */ item_plural = new PopupMenu(); item_plural.add(newMenuItem("Examine")); item_plural.add(newMenuItem("Use")); item_plural.add(newMenuItem("Drop")); this.add(item_plural); item_single = new PopupMenu(); item_single.add(newMenuItem("Examine")); item_single.add(newMenuItem("Use")); item_single.add(newMenuItem("Drop")); item_single.add(newMenuItem("Pick Up")); this.add(item_single); } MenuItem newMenuItem(String label) { MenuItem mi = new MenuItem(label); mi.addActionListener(this); return mi; } public void actionPerformed(ActionEvent evt) { String cmd = evt.getActionCommand(); debug("got action "+cmd); if (cmd.equals("Examine")) { toplevel.examineObj(last_clicked_object.getTag()); } else if (cmd.equals("Drop")) { toplevel.dropObj(last_clicked_object.getTag()); } else if (cmd.equals("Use")) { toplevel.applyObj(last_clicked_object.getTag()); } else if (cmd.equals("Pick Up")) { toplevel.pickupObj(last_clicked_object.getTag()); updateDisplay(); } } void debug(String msg) { if(toplevel.debugflag) System.out.println(msg); } public void mouseClicked(MouseEvent evt) { int objpos=evt.getY() / objpixheight; if (objpos>=ContainerObjects.size()) return; int buttonmask=evt.getModifiers(); CFObject clickobj= (CFObject)ContainerObjects.elementAt(objpos); last_clicked_object = clickobj; Point offset = toplevel.iscrollp.getScrollPosition(); if ((buttonmask&InputEvent.BUTTON2_MASK)>0 ||evt.isControlDown()) { debug("Applying object "+clickobj.getName()); toplevel.applyObj(clickobj.getTag()); } else if ((buttonmask&InputEvent.BUTTON3_MASK)>0) { if (clickobj.getNumObjs() > 1) { item_plural.show(this.getParent(), evt.getX()-(int)offset.getX(), evt.getY()-(int)offset.getY()); } else { item_single.show(this.getParent(), evt.getX()-(int)offset.getX(), evt.getY()-(int)offset.getY()); } } else // yes, we want this LAST! if ((buttonmask&InputEvent.BUTTON1_MASK)>0) { debug("Examining object "+clickobj.getName()); toplevel.examineObj(clickobj.getTag()); } toplevel.focusGained(null); } public void mouseEntered(MouseEvent evt) { } public void mouseExited(MouseEvent evt) { } public void mousePressed(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) { } public void updateDisplay() { synchronized(ContainerObjects) { int curwidth=0, maxwidth=0; int objcount = ContainerObjects.size(); CFObject item; String itemname; Graphics gc = getGraphics(); FontMetrics fm = gc.getFontMetrics(); for (int oc=0; oc<objcount; oc++) { item=(CFObject)ContainerObjects.elementAt(oc); itemname=item.getName(); curwidth=fm.stringWidth(itemname); if (curwidth> maxwidth) maxwidth=curwidth; } winwidth=maxwidth+objpixheight+10; repaint(); } } public void paint(Graphics gc) { synchronized(ContainerObjects) { int objcount = ContainerObjects.size(); CFObject item; if (objcount==0) { gc.drawString("(No container open)", 10,10); return; } for (int oc=0; oc<objcount; oc++) { item=(CFObject)ContainerObjects.elementAt(oc); int Ypos=objpixheight * oc; int Textpos=Ypos+ (objpixheight>>1) +3; Image pixmap = toplevel.getScaledPixmap(item.getFace()); if (pixmap==null) { toplevel.askForFace(item.getFace()); pixmap=toplevel.getPixmap(0); } gc.drawImage(pixmap, 0,Ypos, this); gc.drawString(item.getFlaggedName(), objpixheight+10, Textpos); } } } } Index: TabPanel.java =================================================================== RCS file: /cvsroot/jcrossclient/jcrossclient/TabPanel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TabPanel.java 23 Jan 2006 19:36:08 -0000 1.1 --- TabPanel.java 19 Apr 2006 12:57:15 -0000 1.2 *************** *** 220,225 **** /** Computes tab geometry while laying out the panels components.*/ ! public void layout() { ! super.layout(); computeTabs(); } // make sure tabs are computed. --- 220,225 ---- /** Computes tab geometry while laying out the panels components.*/ ! public void doLayout() { ! super.doLayout(); computeTabs(); } // make sure tabs are computed. |