|
|
|
package com.fr.plugin.db.redis.ui;
|
|
|
|
|
|
|
|
import com.fanruan.api.conf.ConfigurationKit;
|
|
|
|
import com.fanruan.api.conf.Runner;
|
|
|
|
import com.fanruan.api.design.DesignKit;
|
|
|
|
import com.fanruan.api.design.ui.component.UIActionLabel;
|
|
|
|
import com.fanruan.api.design.ui.component.UIIntNumberField;
|
|
|
|
import com.fanruan.api.design.ui.component.UILabel;
|
|
|
|
import com.fanruan.api.design.ui.component.UIPasswordField;
|
|
|
|
import com.fanruan.api.design.ui.component.UITextField;
|
|
|
|
import com.fanruan.api.design.ui.component.UITitledBorder;
|
|
|
|
import com.fanruan.api.design.ui.container.BasicDialog;
|
|
|
|
import com.fanruan.api.design.ui.container.DialogActionAdapter;
|
|
|
|
import com.fanruan.api.design.ui.layout.TableLayoutKit;
|
|
|
|
import com.fanruan.api.design.util.GUICoreKit;
|
|
|
|
import com.fanruan.api.design.work.DatabaseConnectionPane;
|
|
|
|
import com.fr.plugin.db.redis.core.RedisDatabaseConnection;
|
|
|
|
import com.fr.plugin.db.redis.core.pool.RedisConnectionPoolConfig;
|
|
|
|
import com.fr.plugin.db.redis.core.pool.RedisConnectionProxyConfig;
|
|
|
|
import com.fr.plugin.db.redis.ui.pool.RedisConnectionPoolConfigPane;
|
|
|
|
import com.fr.plugin.db.redis.ui.proxy.RedisConnectionProxyConfigPane;
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
import java.awt.*;
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
|
|
|
|
|
|
|
|
public class RedisConnectionPane extends DatabaseConnectionPane<RedisDatabaseConnection> {
|
|
|
|
|
|
|
|
private UITextField hostTextField;
|
|
|
|
private UIIntNumberField portNumberField;
|
|
|
|
private UIPasswordField passwordTextField;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected JPanel mainPanel() {
|
|
|
|
JPanel pane = new JPanel();
|
|
|
|
pane.setLayout(new BorderLayout());
|
|
|
|
hostTextField = new UITextField();
|
|
|
|
portNumberField = new UIIntNumberField();
|
|
|
|
passwordTextField = new UIPasswordField();
|
|
|
|
|
|
|
|
|
|
|
|
JPanel globalConfigPane = new JPanel();
|
|
|
|
GridLayout gridLayout = new GridLayout(1, 2);
|
|
|
|
globalConfigPane.setLayout(gridLayout);
|
|
|
|
|
|
|
|
Component[][] components = new Component[][]{
|
|
|
|
{new UILabel(DesignKit.i18nText("Plugin-Redis_Host") + ":"), hostTextField},
|
|
|
|
{new UILabel(DesignKit.i18nText("Plugin-Redis_Port") + ":"), portNumberField},
|
|
|
|
{new UILabel(DesignKit.i18nText("Plugin-Redis_Password") + ":"), passwordTextField},
|
|
|
|
{null, globalConfigPane}
|
|
|
|
};
|
|
|
|
|
|
|
|
UIActionLabel poolConfigLabel = new UIActionLabel(DesignKit.i18nText("Plugin-Redis_Pool_Config"));
|
|
|
|
UIActionLabel proxyConfigLabel = new UIActionLabel(DesignKit.i18nText("Plugin-Redis_Proxy_Config"));
|
|
|
|
poolConfigLabel.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
final RedisConnectionPoolConfig poolConfig = RedisConnectionPoolConfig.getInstance();
|
|
|
|
final RedisConnectionPoolConfigPane poolConfigPane = new RedisConnectionPoolConfigPane();
|
|
|
|
poolConfigPane.populate(poolConfig);
|
|
|
|
BasicDialog dialog = poolConfigPane.showWindow(SwingUtilities.getWindowAncestor(RedisConnectionPane.this), new DialogActionAdapter() {
|
|
|
|
@Override
|
|
|
|
public void doOk() {
|
|
|
|
ConfigurationKit.modify(RedisConnectionPoolConfig.class, new Runner() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
poolConfigPane.update(poolConfig);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dialog.setVisible(true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
proxyConfigLabel.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
final RedisConnectionProxyConfig proxyConfig = RedisConnectionProxyConfig.getInstance();
|
|
|
|
final RedisConnectionProxyConfigPane proxyConfigPane = new RedisConnectionProxyConfigPane();
|
|
|
|
proxyConfigPane.populate(proxyConfig);
|
|
|
|
BasicDialog dialog = proxyConfigPane.showWindow(SwingUtilities.getWindowAncestor(RedisConnectionPane.this), new DialogActionAdapter() {
|
|
|
|
@Override
|
|
|
|
public void doOk() {
|
|
|
|
ConfigurationKit.modify(RedisConnectionProxyConfig.class, new Runner() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
proxyConfigPane.update(proxyConfig);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
dialog.setVisible(true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
globalConfigPane.add(GUICoreKit.createFlowPane(poolConfigLabel, FlowLayout.LEFT));
|
|
|
|
globalConfigPane.add(GUICoreKit.createFlowPane(proxyConfigLabel, FlowLayout.LEFT));
|
|
|
|
double p = TableLayoutKit.PREFERRED;
|
|
|
|
|
|
|
|
double[] rowSize = new double[]{p, p, p, p, p};
|
|
|
|
double[] columnSize = new double[]{p, 400};
|
|
|
|
|
|
|
|
JPanel settingsUI = TableLayoutKit.createTableLayoutPane(components, rowSize, columnSize);
|
|
|
|
settingsUI.setBorder(UITitledBorder.createBorderWithTitle("Redis"));
|
|
|
|
|
|
|
|
JPanel centerPane = GUICoreKit.createNormalFlowInnerContainerPane();
|
|
|
|
|
|
|
|
centerPane.add(settingsUI);
|
|
|
|
|
|
|
|
pane.add(centerPane, BorderLayout.CENTER);
|
|
|
|
return pane;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void populateSubDatabaseConnectionBean(RedisDatabaseConnection ob) {
|
|
|
|
hostTextField.setText(ob.getHost());
|
|
|
|
portNumberField.setValue(ob.getPort());
|
|
|
|
passwordTextField.setText(ob.getPassword());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected com.fr.plugin.db.redis.core.RedisDatabaseConnection updateSubDatabaseConnectionBean() {
|
|
|
|
RedisDatabaseConnection connection = new RedisDatabaseConnection();
|
|
|
|
connection.setHost(hostTextField.getText());
|
|
|
|
connection.setPort((int) portNumberField.getValue());
|
|
|
|
connection.setPassword(passwordTextField.getText());
|
|
|
|
return connection;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected String title4PopupWindow() {
|
|
|
|
return "Redis";
|
|
|
|
}
|
|
|
|
}
|