| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- package com.leanwo.management;
- import java.awt.AWTEvent;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Image;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.IOException;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Vector;
- import javax.imageio.ImageIO;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.JToolBar;
- import javax.swing.ListSelectionModel;
- import javax.swing.table.DefaultTableModel;
- import javax.swing.table.TableColumnModel;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.leanwo.management.config.AppConfig;
- import com.leanwo.management.config.DataSourceConfig;
- import com.leanwo.management.config.DataSourceConfigList;
- import com.leanwo.management.util.SpringUtil;
- import com.leanwo.management.widget.SelectEventListener;
- import com.leanwo.management.widget.SelectObject;
- /**
- * 数据源设置
- *
- * @author YangZhiJie
- *
- */
- public class DataSourceSettingFrame extends JFrame {
- private static Logger logger = LoggerFactory.getLogger(DataSourceSettingFrame.class);
-
- private JButton saveButton;
- // 得到显示器屏幕的宽高
- private int width = Toolkit.getDefaultToolkit().getScreenSize().width;
- private int height = Toolkit.getDefaultToolkit().getScreenSize().height;
- // 定义窗体的宽高
- private int windowsWidth = 800;
- private int windowsHeight = 400;
-
- private DefaultTableModel tableModel; //表格模型对象
-
- public DataSourceSettingFrame() {
- super();
- this.initView();
- setTitle("数据源配置");
- }
-
- private void initView() {
- this.setLayout(new BorderLayout(5,5));
- JToolBar toolbar = new JToolBar();
- toolbar.setFloatable(false);
- toolbar.setBorderPainted(false);
-
- add(toolbar, BorderLayout.NORTH);
-
- saveButton = new JButton("保存");
- toolbar.add(saveButton);
- JScrollPane scrollPane = new JScrollPane(); // 支持滚动
- getContentPane().add(scrollPane, BorderLayout.CENTER);
- String[] columnNames = { "数据源beanId", "链接字符串", "用户名", "密码" };
- DataSourceConfigList dataSourceConfigList = (DataSourceConfigList)SpringUtil.getSingleBean(DataSourceConfigList.class);
- String [][] tableValues= null;
- if(dataSourceConfigList != null) {
- List<DataSourceConfig> items = dataSourceConfigList.getItems();
- tableValues= new String[items.size()][4];
- if(items != null) {
- for (int row = 0; row < items.size(); row++) { // 获得数据
- DataSourceConfig item = items.get(row);
- String[] rowValue = { item.getBeanId(), item.getUrl(), item.getUsername(), item.getPassword() };
- tableValues[row] = rowValue;
- }
- }
- }
-
-
- tableModel = new DefaultTableModel(tableValues,columnNames);
-
- JTable table = new JTable(tableModel); // 自定义的表格
- table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); // 关闭表格列的自动调整功能。
- table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 单选
- // table.setSelectionBackground(Color.YELLOW);
- // table.setSelectionForeground(Color.RED);
- table.setRowHeight(30);
-
- TableColumnModel columnModel = table.getColumnModel();
- columnModel.getColumn(0).setPreferredWidth(100);
- columnModel.getColumn(1).setPreferredWidth(400);
- columnModel.getColumn(2).setPreferredWidth(100);
- columnModel.getColumn(3).setPreferredWidth(100);
- table.setColumnModel(columnModel);
-
- scrollPane.setViewportView(table); // 支持滚动
-
- add(scrollPane, BorderLayout.CENTER);
-
- // 设置图标
- URL path = DataSourceSettingFrame.class.getResource("/prodog_16.png");
- Image image;
- try {
- image = ImageIO.read(path);
- this.setIconImage(image);
- } catch (IOException e) {
- logger.error("读取图片异常。", e);
- }
-
- // 激活窗口事件
- this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
-
- // 设置窗体位置和大小
- this.setBounds((width - windowsWidth) / 2, (height - windowsHeight) / 2, windowsWidth, windowsHeight);
-
- // 保存按钮
- this.saveButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- save();
- }
- });
- }
-
- /**
- * 保存数据
- * 首先更新yml里面的内容,然后更新各个服务中applicationContext.xml里面的数据
- */
- private void save() {
- Vector vector = tableModel.getDataVector();
- List<DataSourceConfig> dataSourceConfigs = new ArrayList<DataSourceConfig>();
- for(int i = 0; i < vector.size(); i ++) {
- DataSourceConfig dataSourceConfig = new DataSourceConfig();
- Vector rowData = (Vector)vector.elementAt(i);
- dataSourceConfig.setBeanId((String)rowData.elementAt(0));
- dataSourceConfig.setUrl((String)rowData.elementAt(1));
- dataSourceConfig.setUsername((String)rowData.elementAt(2));
- dataSourceConfig.setPassword((String)rowData.elementAt(3));
- dataSourceConfigs.add(dataSourceConfig);
- }
-
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("您修改了程序管理器的配置,");
- // 根据dataSourceConfigs修改yml
-
- // 根据dataSourceConfigs修改各个服务器中applicationContext.xml里面的数据
- stringBuilder.append("xxx的配置,");
-
- // 可以参考XmlConfigPathService中的方法
- stringBuilder.append("请重新启动本程序。");
- // 如果您修改了配置,请重新启动本程序
- JOptionPane.showMessageDialog(this, stringBuilder.toString(), "提示:重新启动", JOptionPane.INFORMATION_MESSAGE);
-
- }
-
- }
|