// Processed by NMI's Java Code Viewer 4.8.2 © 1997-2000 B. Lemaire // Website: http://njcv.htmlplanet.com E-mail: info@njcv.htmlplanet.com // Copy registered to Evaluation Copy // Source File Name: ScoreOfPlayers.java import java.awt.*; import symantec.itools.awt.MultiList; class ScoreOfPlayers extends Panel { private ScrollingPanel scroll; private MultiList multiList1; private int lineNumber; private ScorePanel scorePanel; private Font font; private FontMetrics metrics; private int lineMaxLength; Frame target; public ScoreOfPlayers(Frame frame) { font = new Font("Dialog", 0, 8); target = frame; scorePanel = new ScorePanel(frame); multiList1 = new MultiList(3, false); multiList1.setCellFont(font); multiList1.setCellColors(Color.black, Color.white); multiList1.setHeadingFont(font); multiList1.setHeadingColors(Color.black, Color.lightGray); multiList1.setColumnAlignment(0, 0); multiList1.setColumnAlignment(1, 1); multiList1.setColumnAlignment(0, 0); multiList1.setHeading("Player", 1, 50); multiList1.setHeading("Score", 2, 100); multiList1.setHeading("Words", 3, 150); scroll = new ScrollingPanel(multiList1, Color.white, ScrollingPanel.SOUTH_EAST, 1); setLayout(new BorderLayout()); add("Center", scroll); add("South", scorePanel); metrics = getFontMetrics(font); } public void addLine(String s, int i, String s1) { s1 = s1.toUpperCase(); int j = metrics.stringWidth(s + i + s1); int k = multiList1.getColumnSize(0) + multiList1.getColumnSize(1) + metrics.stringWidth(s1); int l = j <= k ? k : j; if(lineMaxLength < l) lineMaxLength = l; if(multiList1.size().height < 25 + (lineNumber + 1) * 13 || multiList1.size().width < lineMaxLength + 60) multiList1.resize(lineMaxLength + 60, 25 + (lineNumber + 1) * 13); scroll.preferredSize = new Dimension(lineMaxLength + 60, 25 + (lineNumber + 1) * 13); multiList1.addTextCell(lineNumber, 0, s); multiList1.addTextCell(lineNumber, 1, String.valueOf(i)); multiList1.addTextCell(lineNumber, 2, s1); multiList1.redraw(); scroll.updatePanel(); scroll.bringDown(); lineNumber++; } public void newGameStarted() { scorePanel.newGameStarted(); } public void updateScore(int i) { scorePanel.updateScore(i); } public void playerDisconnected(boolean flag) { if(flag) { scorePanel.clearScorePanel(); scorePanel.updateScorePanel(); scorePanel.paintNicksInBlack(); return; } else { scorePanel.clearScorePanel(); scorePanel.updateScorePanel(); scorePanel.placeTimer(scorePanel.getCurrentIndex(), false); return; } } public void clearScorePanel() { scorePanel.clearScorePanel(); scorePanel.eraseTimer(); scorePanel.resize(size().width, 135); validate(); } public void eraseTimer() { scorePanel.eraseTimer(); scorePanel.paintNicksInBlack(); } public void clearScore() { clearScorePanel(); multiList1.clear(); multiList1.redraw(); scroll.preferredSize = new Dimension(0, 0); scroll.resize(scroll.size().width, scroll.size().height); scroll.validate(); } public void placeTimer(int i) { scorePanel.placeTimer(i, true); } public void placeWinner(int i) { scorePanel.placeWinner(i); } public synchronized void validate() { multiList1.repaint(); } }