// 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: PropertiesDialog.java import java.awt.*; import java.io.*; import symantec.itools.awt.BaseTabbedPanel; import symantec.itools.awt.TabPanel; public class PropertiesDialog extends Dialog { TabPanel tabPanel1; Panel networkSettingsPanel; Label label1; Label label2; Label label3; TextField nickText; TextField hostText; TextField portNumber; Spinner connectTime; Label label4; Panel gameSettingsPanel; Checkbox spellerCheckbox; Checkbox timeLimitCheckbox; Spinner turnTime; Label label5; Label label6; Spinner letterField; Spinner letterValueField; Label label7; Label label8; Label label9; Label label10; Button defaultButton; Button okButton; Button cancelButton; Button applyButton; Button saveConnectionButton; int newLetterValues[]; Frame target; public PropertiesDialog(Frame frame, boolean flag) { super(frame, flag); newLetterValues = new int[26]; target = frame; setLayout(null); resize(insets().left + insets().right + 348, insets().top + insets().bottom + 263 + 20); setBackground(new Color(0xc0c0c0)); createDialog(); setTitle("Customize Scrabble"); setResizable(false); } public void createDialog() { Panel panel = new Panel(); panel.setLayout(null); panel.reshape(insets().left, insets().top, 358, 293); add(panel); tabPanel1 = new TabPanel(); tabPanel1.setLayout(null); tabPanel1.reshape(0, 0, 348, 228); panel.add(tabPanel1); String as[] = new String[2]; as[0] = new String("Network Settings"); as[1] = new String("Game Settings"); tabPanel1.setPanelLabels(as); networkSettingsPanel = new Panel(); networkSettingsPanel.setLayout(null); networkSettingsPanel.reshape(12, 33, 324, 184); tabPanel1.add(networkSettingsPanel); label1 = new Label("Nickname"); label1.reshape(12, 15, 100, 12); networkSettingsPanel.add(label1); label2 = new Label("Host name"); label2.reshape(12, 63, 100, 12); networkSettingsPanel.add(label2); label3 = new Label("Port Number"); label3.reshape(12, 111, 100, 12); networkSettingsPanel.add(label3); nickText = new TextField(); nickText.reshape(24, 30, 100, 24); networkSettingsPanel.add(nickText); hostText = new TextField(); hostText.reshape(24, 78, 100, 24); networkSettingsPanel.add(hostText); portNumber = new TextField(); portNumber.reshape(24, 126, 100, 24); networkSettingsPanel.add(portNumber); connectTime = new Spinner(60, 20, 'n', this); connectTime.move(201, 80); networkSettingsPanel.add(connectTime); connectTime.setMax(1500); connectTime.setCurrent(15); connectTime.setEditable(true); label4 = new Label("Connection Timeout"); label4.reshape(156, 63, 156, 12); networkSettingsPanel.add(label4); saveConnectionButton = new Button("Save"); saveConnectionButton.reshape(200, 126, 60, 24); networkSettingsPanel.add(saveConnectionButton); gameSettingsPanel = new Panel(); gameSettingsPanel.setLayout(null); gameSettingsPanel.reshape(12, 33, 324, 184); tabPanel1.add(gameSettingsPanel); spellerCheckbox = new Checkbox("Use Speller"); spellerCheckbox.reshape(12, 15, 100, 24); gameSettingsPanel.add(spellerCheckbox); spellerCheckbox.setState(true); turnTime = new Spinner(60, 20, 'n', this); turnTime.move(15, 67); gameSettingsPanel.add(turnTime); turnTime.setMin(0); turnTime.setMax(1500); turnTime.setCurrent(120); turnTime.setEditable(true); label5 = new Label("Turn Time Limit"); label5.reshape(0, 51, 130, 12); gameSettingsPanel.add(label5); timeLimitCheckbox = new Checkbox("Enable Time Limit"); timeLimitCheckbox.reshape(110, 67, 130, 24); gameSettingsPanel.add(timeLimitCheckbox); timeLimitCheckbox.setState(true); label6 = new Label("Edit Scores"); label6.reshape(103, 111, 100, 12); gameSettingsPanel.add(label6); letterField = new Spinner(60, 20, 'l', this); letterField.move(54, 140); gameSettingsPanel.add(letterField); String as1[] = new String[26]; char c = 'A'; for(int i = 0; i < 26; i++) { as1[i] = String.valueOf(c); c++; } letterField.setListItems(as1); letterValueField = new Spinner(60, 20, 'n', this); letterValueField.move(195, 140); gameSettingsPanel.add(letterValueField); letterValueField.setEditable(true); letterValueField.setMin(0); letterValueField.setMax(50); label7 = new Label("Letter"); label7.reshape(48, 123, 100, 12); gameSettingsPanel.add(label7); label8 = new Label("Value"); label8.reshape(192, 123, 100, 12); gameSettingsPanel.add(label8); defaultButton = new Button("Default"); defaultButton.reshape(12, 228, 60, 24); panel.add(defaultButton); okButton = new Button("Ok"); okButton.reshape(132, 228, 60, 24); panel.add(okButton); cancelButton = new Button("Cancel"); cancelButton.reshape(204, 228, 60, 24); panel.add(cancelButton); applyButton = new Button("Apply"); applyButton.reshape(276, 228, 60, 24); panel.add(applyButton); if(!ServerData.amI_Server || ServerData.multiServerStartedGame) { spellerCheckbox.disable(); timeLimitCheckbox.disable(); turnTime.disable(); letterValueField.disable(); label9 = new Label("Currently not Editable"); label9.reshape(180, 0, 200, 25); gameSettingsPanel.add(label9); } if(ClientData.amI_Connected) { nickText.disable(); hostText.disable(); portNumber.disable(); connectTime.disable(); saveConnectionButton.disable(); label10 = new Label("Currently not Editable"); label10.reshape(180, 0, 200, 25); networkSettingsPanel.add(label10); } getCurrentValues(); } public synchronized void show() { Rectangle rectangle = getParent().bounds(); Rectangle rectangle1 = bounds(); resize(0, 0); super.show(); invalidate(); move(rectangle.x + (rectangle.width - rectangle1.width) / 2, rectangle.y + (rectangle.height - rectangle1.height) / 2); resize(rectangle1.width, rectangle1.height); validate(); } public boolean handleEvent(Event event) { if(event.id == 201) { dispose(); hide(); target.repaint(); return true; } if(event.id == 1001) { if(event.target == applyButton) { applyButton_Pressed(); return true; } if(event.target == cancelButton) { dispose(); hide(); target.repaint(); return true; } if(event.target == defaultButton) { defaultButton_Pressed(); return true; } if(event.target == okButton) { applyButton_Pressed(); dispose(); hide(); target.repaint(); return true; } if(event.target == saveConnectionButton) { saveConnectionButton_Pressed(); return true; } if(event.target == letterField) { int i = letterIndex(); if(i < 26 && i >= 0) letterValueField.setCurrent(newLetterValues[i]); return true; } if(event.target == letterValueField) { int j = letterIndex(); if(j < 26 && j >= 0) newLetterValues[j] = letterValueField.getCurrent(); return true; } if(event.target == spellerCheckbox) { if(!spellerCheckbox.getState()) timeLimitCheckbox.setState(false); else timeLimitCheckbox.setState(true); return true; } if(event.target == timeLimitCheckbox) { if(!spellerCheckbox.getState()) timeLimitCheckbox.setState(false); return true; } } return super.handleEvent(event); } public void defaultButton_Pressed() { spellerCheckbox.setState(true); timeLimitCheckbox.setState(true); turnTime.setCurrent(120); for(byte byte0 = 0; byte0 < 26; byte0++) newLetterValues[byte0] = ServerData.defaultLetterValues[byte0]; int i = letterIndex(); if(i < 26 && i >= 0) letterValueField.setCurrent(newLetterValues[i]); connectTime.setCurrent(ClientData.deafultConnectionTimeout); nickText.setText(ClientData.defaultNick); hostText.setText(ClientData.defaultHost); portNumber.setText(String.valueOf(ClientData.defaultPort)); } public void applyButton_Pressed() { if(ServerData.amI_Server && !ServerData.multiServerStartedGame) { ServerData.isSpellerUsed = spellerCheckbox.getState(); ServerData.isTimeLimitUsed = timeLimitCheckbox.getState(); ServerData.timeLimit = turnTime.getCurrent(); for(byte byte0 = 0; byte0 < 26; byte0++) ServerData.letterValues[byte0] = newLetterValues[byte0]; target.handleEvent(new Event(this, 1001, null)); } if(!ClientData.amI_Connected) { ClientData.connectionTimeout = connectTime.getCurrent(); ClientData.nick = nickText.getText(); ClientData.host = hostText.getText(); try { ClientData.port = Integer.valueOf(portNumber.getText()).intValue(); ServerData.port = Integer.valueOf(portNumber.getText()).intValue(); return; } catch(NumberFormatException _ex) { ClientData.port = ClientData.defaultPort; } ServerData.port = ServerData.defaultPort; return; } else { return; } } public void saveConnectionButton_Pressed() { File file = new File(Scrabble.gameDirectory + "connect.cfg"); file.delete(); try { RandomAccessFile randomaccessfile = new RandomAccessFile(file, "rw"); randomaccessfile.writeBytes(nickText.getText() + "\n"); ClientData.defaultNick = nickText.getText(); randomaccessfile.writeBytes(hostText.getText() + "\n"); ClientData.defaultHost = hostText.getText(); try { ClientData.defaultPort = Integer.valueOf(portNumber.getText()).intValue(); ServerData.defaultPort = Integer.valueOf(portNumber.getText()).intValue(); randomaccessfile.writeBytes(portNumber.getText() + "\n"); } catch(NumberFormatException _ex) { ClientData.defaultPort = ClientData.port; ServerData.defaultPort = ServerData.port; randomaccessfile.writeBytes(String.valueOf(ClientData.port) + "\n"); } randomaccessfile.writeBytes(String.valueOf(connectTime.getCurrent()) + "\n"); ClientData.deafultConnectionTimeout = connectTime.getCurrent(); randomaccessfile.close(); return; } catch(IOException _ex) { return; } } public void getCurrentValues() { spellerCheckbox.setState(ServerData.isSpellerUsed); turnTime.setCurrent(ServerData.timeLimit); timeLimitCheckbox.setState(ServerData.isTimeLimitUsed); for(byte byte0 = 0; byte0 < 26; byte0++) newLetterValues[byte0] = ServerData.letterValues[byte0]; letterValueField.setCurrent(newLetterValues[0]); connectTime.setCurrent(ClientData.connectionTimeout); nickText.setText(ClientData.nick); hostText.setText(ClientData.host); portNumber.setText(String.valueOf(ClientData.port)); } public int letterIndex() { String s = letterField.getCurrentText(); int i = 0; for(char c = 'A'; c <= 'Z'; c++) { if(s.equals(String.valueOf(c))) break; i++; } return i; } }