- Timestamp:
- 2009-09-15T20:16:08+12:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
greenstone3/trunk/src/java/org/greenstone/server/Server2Settings.java
r18969 r20604 2 2 3 3 import java.awt.BorderLayout; 4 import java.awt.FlowLayout; 5 import java.awt.GridLayout; 4 6 import java.awt.event.*; 7 import java.net.InetAddress; 8 import java.net.UnknownHostException; 5 9 import java.util.ArrayList; 6 10 import javax.swing.*; … … 9 13 import org.greenstone.server.BaseServerSettings; 10 14 11 public class Server2Settings extends BaseServerSettings implements ChangeListener,ActionListener15 public class Server2Settings extends BaseServerSettings implements ActionListener 12 16 { 13 17 protected JComboBox prefix_combobox; 18 protected JCheckBox allowConnections; 19 protected JRadioButton[] hostRadioButtons = new JRadioButton[4]; 20 21 // 0 to 3: 0 is resolve (hostname) from local IP, 1 is local IP address, 2 is localhost, 3 is 127.0.0.1 22 protected int address_resolution_method = 2; 23 protected int externalaccess = 0; 14 24 15 25 public Server2Settings(BaseServer server) 16 26 { 17 super(server); 27 super(server); 18 28 } 19 29 20 30 protected JPanel createServletPanel() 21 31 { 22 portNumber_spinner.addChangeListener(this); 32 JPanel server2panel = new JPanel(); 33 server2panel.setLayout(new BorderLayout()); 23 34 24 JLabel prefix_label = new JLabel(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".URL")); 35 boolean allowCons = false; 36 String externalAccess = server.config_properties.getProperty("externalaccess").trim(); 37 if(externalAccess != null && externalAccess.equals("1")) { 38 this.externalaccess = 1; 39 allowCons = true; 40 } 41 allowConnections = new JCheckBox(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".ExternalAccess"), allowCons); 42 allowConnections.setBackground(bg_color); 43 allowConnections.addActionListener(this); 44 45 JPanel connect_panel = new JPanel(new GridLayout(4, 1)); 46 connect_panel.setBackground(bg_color); 47 connect_panel.setBorder(BorderFactory.createTitledBorder("Connection configuration")); 25 48 26 prefix_combobox = new JComboBox(); 27 prefix_combobox.setEditable(true); 28 prefix_combobox.addItem(server.getBrowserURL()); 29 prefix_combobox.addActionListener(this); 49 hostRadioButtons = new JRadioButton[4]; 50 hostRadioButtons[0] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".ResolveIP")); 51 hostRadioButtons[1] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".LocalIP")); 52 hostRadioButtons[2] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".AlwaysUse")+" localhost"); 53 hostRadioButtons[3] = new JRadioButton(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".AlwaysUse")+" 127.0.0.1"); 30 54 31 JPanel comb_panel = new JPanel(); 32 comb_panel.setLayout(new BorderLayout()); 33 comb_panel.add(prefix_label, BorderLayout.NORTH); 34 comb_panel.add(prefix_combobox, BorderLayout.CENTER); 55 ButtonGroup hostGroup = new ButtonGroup(); 56 for(int i = 0; i < hostRadioButtons.length; i ++) { 57 connect_panel.add(hostRadioButtons[i]); 58 hostGroup.add(hostRadioButtons[i]); 59 hostRadioButtons[i].setBackground(bg_color); 60 hostRadioButtons[i].setEnabled(!allowCons); 61 } 62 63 64 String addressResolutionMethod = server.config_properties.getProperty("address_resolution_method").trim(); 65 if(addressResolutionMethod != null) { 66 this.address_resolution_method = Integer.parseInt(addressResolutionMethod); 67 } 68 hostRadioButtons[address_resolution_method].setSelected(true); 69 70 JPanel comb_panel = new JPanel(new BorderLayout()); 71 comb_panel.add(allowConnections, BorderLayout.NORTH); 72 comb_panel.add(connect_panel, BorderLayout.CENTER); 35 73 return comb_panel; 36 74 } 37 75 38 public String onSave()76 public boolean[] onSave() 39 77 { 40 String result = ""; 41 if (!server.getBrowserURL().equals(prefix_combobox.getSelectedItem())) { 42 result += "changed"; 43 result += "restart"; 78 // superclass detects changes to port and autoenter 79 // handle changes to address_resolution_method and externalAccess/allowConnections here 80 81 boolean hasChanged = false; 82 boolean requireRestart = false; 83 84 for(int i = 0; i < hostRadioButtons.length; i++) { 85 if(hostRadioButtons[i].isSelected() && address_resolution_method != i) { 86 address_resolution_method = i; 87 hasChanged = true; 88 requireRestart = true; 89 } 44 90 } 45 return result; 91 92 int oldExternalAccess = externalaccess; 93 externalaccess = allowConnections.isSelected() ? 1 : 0; 94 if (oldExternalAccess != externalaccess) { 95 hasChanged = true; 96 requireRestart = true; 97 } 98 99 boolean[] returnValues = { hasChanged, requireRestart }; 100 return returnValues; 46 101 } 47 102 48 103 public void save(ScriptReadWrite scriptReadWrite, ArrayList newFileLines) 49 104 { 105 // write only 1 or 0 (and not true or false) for Server2 50 106 boolean auto_enter = autoEnter.isSelected(); 51 107 if(autoStart != auto_enter) { … … 53 109 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter); 54 110 } 55 }56 111 57 public void stateChanged(ChangeEvent e) { 58 int portNumber = ((Integer)portNumber_spinner.getValue()).intValue(); 59 String url = (String)prefix_combobox.getSelectedItem(); 60 url.replace('\\', '/'); 61 String pre = ""; 62 if(url.indexOf("http://") != -1) { 63 pre = "http://"; 64 url = url.substring(7); 112 // external access - onSave() would have updated this value 113 newFileLines = scriptReadWrite.queryReplace(newFileLines, "externalaccess", Integer.toString(externalaccess)); 114 115 // work out the host (default is address_resolution_method 2: localhost) 116 String host = "localhost"; 117 InetAddress inetAddress = null; 118 try { 119 inetAddress = InetAddress.getLocalHost(); 120 } catch(UnknownHostException e) { 121 logger.error(e); 122 logger.info("Server2.java reload(): Defaulting host IP to "+ host); // use the default 123 address_resolution_method = 2; 65 124 } 125 switch(address_resolution_method) { 126 case 0: 127 host = inetAddress.getHostName(); 128 break; 129 case 1: 130 host = inetAddress.getHostAddress(); 131 break; 132 case 3: 133 host = "127.0.0.1"; 134 break; 135 case 2: default: 136 host = "localhost"; 137 } 138 newFileLines = scriptReadWrite.queryReplace(newFileLines, "host", host); 66 139 67 String[] parts = url.split("/"); 68 String prefix = parts[0]; 69 70 int colon = prefix.indexOf(':'); 71 if(colon != -1) { 72 prefix = prefix.substring(0, colon); 73 } 140 // address resolution method - onSave() would have updated 141 // this value (or the UnknownHostException above might have) 142 newFileLines = scriptReadWrite.queryReplace(newFileLines, "address_resolution_method", Integer.toString(address_resolution_method)); 74 143 75 url = pre + prefix + ":" + portNumber;76 for(int i = 1; i < parts.length; i++) {77 url = url + "/" + parts[i];78 }79 80 prefix_combobox.setSelectedItem(url);81 144 } 82 145 83 146 public void actionPerformed(ActionEvent e) { 84 String url = (String)prefix_combobox.getSelectedItem(); 85 int portNumber = 80; 86 87 String oldUrl = url; 88 if(url.indexOf("http://") != -1) { 89 url = url.substring(7); 90 } 91 int colon = url.indexOf(':'); 92 int slash = url.indexOf('/'); 93 if(slash == -1) { 94 slash = url.length(); 95 } 96 if(colon != -1) { 97 url = url.substring(colon+1, slash); 98 try { 99 portNumber_spinner.setValue(Integer.decode(url)); 100 } catch(NumberFormatException nfe) { // couldn't parse port number 101 // not an integer, leave portnumber at 80 102 String oldNum = portNumber_spinner.getValue().toString(); 103 oldUrl = oldUrl.replaceFirst(oldNum, "80"); 104 portNumber_spinner.setValue(new Integer(80)); 147 boolean toggle = !allowConnections.isSelected(); 148 if(e.getSource() == allowConnections) { 149 for(int i = 0; i < hostRadioButtons.length; i++) { 150 hostRadioButtons[i].setEnabled(toggle); 105 151 } 106 } else { // no port number107 oldUrl = oldUrl.replaceFirst(url, url+":80");108 portNumber_spinner.setValue(new Integer(80));109 152 } 110 153 }
Note:
See TracChangeset
for help on using the changeset viewer.