TianGuangHui 8 anni fa
parent
commit
ae63619144

+ 36 - 55
src/main/java/com/leanwo/management/ServerSettingJFrame.java

@@ -4,6 +4,7 @@ import java.awt.AWTEvent;
 import java.awt.AWTException;
 import java.awt.BorderLayout;
 import java.awt.Color;
+import java.awt.Container;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Image;
@@ -21,14 +22,15 @@ import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
+
 import javax.imageio.ImageIO;
 import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
 import javax.swing.Timer;
@@ -48,99 +50,77 @@ import com.leanwo.management.model.XmlConfigPath;
  *
  */
 public class ServerSettingJFrame  extends JFrame{
-	
 	private static Log logger = LogFactory.getLog(ServerSettingJFrame.class);
-
 	private ApplicationSetting applicationSetting;
 	private XmlConfigPath xmlConfigPath;
 	private XmlConfigPathService xmlConfigPathService;
-	private JPanel mainPanel = null;
-	private JPanel innerPanel = null;
-	private GridBagConstraints constrains = null;
+	private Container jPanel = null;
 	private JLabel label = null;
 	private JTextField portTextField;
 	private JTextField tokenTextField;
 	private Map<String, JTextArea> textAreas = new HashMap<String, JTextArea>();
 	private JButton saveButton;
 	
-	private int index = 0;
-	
 	public ServerSettingJFrame(ApplicationSetting applicationSetting) {
+		this.jPanel = this.getContentPane();  
+
 		this.setSize(800, 600);
 		this.setTitle("程序配置管理器");
-		
-		this.mainPanel = new JPanel(new BorderLayout());
-		this.add(mainPanel);
-				
-		
 		this.xmlConfigPathService = (XmlConfigPathService) SpringUtil.getSingleBean(XmlConfigPathService.class);
 		this.applicationSetting = applicationSetting;
-		
 		try {
 			this.xmlConfigPathService.load(applicationSetting);
-		}catch(ConfigFileException ex) {
-			logger.error("配置文件异常", ex);
-			JOptionPane.showMessageDialog(null, ex.getMessage(), "配置文件异常", JOptionPane.ERROR_MESSAGE);
+		} catch (ConfigFileException e1) {
+			logger.error("读取配置文件异常",e1);
+			JOptionPane.showMessageDialog(null, e1.getMessage(), "配置文件异常", JOptionPane.ERROR_MESSAGE);
 			this.dispose();
 		}
-		
 		this.xmlConfigPath = applicationSetting.getXmlConfigPath();
-		this.innerPanel = new JPanel(new GridBagLayout());
-		
-		this.constrains = new GridBagConstraints();
-		this.constrains.insets = new Insets(5, 5, 5, 5);
-		this.constrains.fill = GridBagConstraints.BOTH;
-		this.constrains.gridx = 0;
-		this.constrains.gridy = index;
-		this.constrains.weightx = 100;        
-		this.constrains.anchor = GridBagConstraints.NORTH;
-		
-		JScrollPane scrollPanel = new JScrollPane(innerPanel);
-		mainPanel.add(scrollPanel, BorderLayout.CENTER);
+		jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));  
 		
         if(this.xmlConfigPath != null) {
-    		label = new JLabel("端口号");    		
-            innerPanel.add(label, constrains);
+    		label = new JLabel("端口号");
+    		label.setAlignmentY(LEFT_ALIGNMENT);
+
+            jPanel.add(label);
             
             portTextField = new JTextField();
-            portTextField.setBorder(javax.swing.BorderFactory.createLineBorder(Color.BLACK));
+            portTextField.setAlignmentY(LEFT_ALIGNMENT);
             if(xmlConfigPath.getPortNo() != null) {
             	portTextField.setText(xmlConfigPath.getPortNo().toString());
             }
-    		this.constrains.gridy = ++ index;
-            innerPanel.add(portTextField, constrains);
+            jPanel.add(portTextField);
             
             
     		label = new JLabel("Token");
-    		this.constrains.gridy = ++ index;
-            innerPanel.add(label, constrains);
+    		label.setAlignmentY(LEFT_ALIGNMENT);
+            jPanel.add(label);
 
             tokenTextField = new JTextField();
-            tokenTextField.setBorder(javax.swing.BorderFactory.createLineBorder(Color.BLACK));
-    		this.constrains.gridy = ++ index;
-            innerPanel.add(tokenTextField, constrains);
+            tokenTextField.setAlignmentY(LEFT_ALIGNMENT);
+            tokenTextField.setText(xmlConfigPath.getToken());
+            jPanel.add(tokenTextField);
             
             
             
         	Map<String, String> contents = applicationSetting.getXmlConfigPath().getContents();
         	for(String key : contents.keySet()) {
         		label = new JLabel(key);
-        		this.constrains.gridy = ++ index;
-                innerPanel.add(label, constrains);
+        		label.setAlignmentY(LEFT_ALIGNMENT);
+                jPanel.add(label);
                 
         		JTextArea textArea = new JTextArea();
+        		textArea.setAlignmentY(LEFT_ALIGNMENT);
         		textArea.setText(contents.get(key));
-        		textArea.setRows(5);
-        		textArea.setBorder(javax.swing.BorderFactory.createLineBorder(Color.BLACK));
+        		textArea.setSelectedTextColor(Color.RED);
+        		textArea.setLineWrap(true);        //激活自动换行功能 
+        		textArea.setWrapStyleWord(true);            // 激活断行不断字功能
+                jPanel.add(textArea);
                 textAreas.put(key, textArea);
-        		this.constrains.gridy = ++ index;
-                innerPanel.add(textArea, constrains);
         	}
 
-    		index ++;
         	saveButton = new JButton("保存");
-    		this.constrains.gridy = ++ index;
-            innerPanel.add(saveButton, constrains);
+            jPanel.add(saveButton);
             
             saveButton.addActionListener(new ActionListener() {
 				@Override
@@ -160,16 +140,17 @@ public class ServerSettingJFrame  extends JFrame{
 							xmlConfigPath.getContents().put(key, textAreas.get(key).getText());
 						}
 					}
-					xmlConfigPathService.save(applicationSetting);
+					try {
+						xmlConfigPathService.save(applicationSetting);
+					} catch (ConfigFileException e1) {
+						logger.error("修改配置文件异常");
+						JOptionPane.showMessageDialog(null, e1.getMessage(), "修改配置文件异常", JOptionPane.ERROR_MESSAGE);
+						e1.printStackTrace();
+					}
 				}
 			});
         }
 
 		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-//		this.addWindowListener(new java.awt.event.WindowAdapter() {
-//			public void windowClosing(java.awt.event.WindowEvent e) {
-//				ServerSettingJFrame.this.setVisible(false);
-//			}
-//		});
 	}
 }

+ 9 - 7
src/main/java/org/leanwo/management/util/XmlConfigPathService.java

@@ -24,6 +24,7 @@ import org.dom4j.Element;
 import org.dom4j.io.OutputFormat;
 import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
+import org.leanwo.management.exception.ConfigFileException;
 
 import com.leanwo.management.model.ApplicationSetting;
 import com.leanwo.management.model.XmlConfigPath;
@@ -39,8 +40,9 @@ public class XmlConfigPathService {
 	 * 从xml配中获取node 的数据
 	 * ,contents等属性
 	 * @param setting
+	 * @throws ConfigFileException 
 	 */
-	public void load(ApplicationSetting setting) {
+	public void load(ApplicationSetting setting) throws ConfigFileException {
 		Map<String, String> contentMap = new HashMap<String, String>();
 		XmlConfigPath xmlConfigPath = setting.getXmlConfigPath();
 		String xmlFilePath = setting.getInstallPath() + "\\" + xmlConfigPath.getXmlFileName();
@@ -55,7 +57,7 @@ public class XmlConfigPathService {
 				for (String s : nodeNames) {
 					Element dataSource = parse(root , "id" , s);
 					if (dataSource == null) {
-						throw new RuntimeException("在文件:"+xmlFilePath+",中未找到id="+s+"的标签");
+						throw new ConfigFileException("在文件:"+xmlFilePath+",中未找到id="+s+"的标签");
 					}
 					String asXML = dataSource.asXML();
 					String result = asXML.substring(asXML.indexOf(">") + 1 , asXML.lastIndexOf("<"));
@@ -76,12 +78,11 @@ public class XmlConfigPathService {
 					contentMap.put(s, sb.toString());*/
 					contentMap.put(s, result);
 				}
-				
 			} catch (DocumentException e) {
 				e.printStackTrace();
 			} 
 		}else{
-			throw new RuntimeException("文件:"+xmlFilePath+",不存在");
+			throw new ConfigFileException("文件:"+xmlFilePath+",不存在");
 		}
 		//读取propertis信息
 		String propertiesPath = setting.getInstallPath()+"/config/config.properties";
@@ -110,7 +111,7 @@ public class XmlConfigPathService {
 				}
 			} 
 		}else{
-			throw new RuntimeException("文件:"+propertiesPath+",不存在");
+			throw new ConfigFileException("文件:"+propertiesPath+",不存在");
 		}
 		if(xmlConfigPath != null) {
 			xmlConfigPath.setPortNo(port);
@@ -145,8 +146,9 @@ public class XmlConfigPathService {
 	 * 从xml配中获取node 的数据
 	 * ,contents保存到文件
 	 * @param setting
+	 * @throws ConfigFileException 
 	 */
-	public void save(ApplicationSetting setting) {
+	public void save(ApplicationSetting setting) throws ConfigFileException {
 		XmlConfigPath xmlConfigPath = setting.getXmlConfigPath();
 		Map<String, String> contents = xmlConfigPath.getContents();
 		//目标xml文件路径
@@ -165,7 +167,7 @@ public class XmlConfigPathService {
 				for (String s : nodeNames) {
 					Element dataSource = parse(root , "id" , s);
 					if (dataSource == null) {
-						throw new RuntimeException("在文件:"+xmlFilePath+",中未找到id="+s+"的标签");
+						throw new ConfigFileException("在文件:"+xmlFilePath+",中未找到id="+s+"的标签");
 					}
 					//清空bean节点
 					dataSource.clearContent();