You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
7.2 KiB
161 lines
7.2 KiB
package com.fr.plugin.db.redis.ui; |
|
|
|
import com.fanruan.api.conf.ConfigurationKit; |
|
import com.fanruan.api.design.DesignKit; |
|
import com.fanruan.api.design.ui.component.UIActionLabel; |
|
import com.fanruan.api.design.ui.component.UIButton; |
|
import com.fanruan.api.design.ui.component.UICheckBox; |
|
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.layout.TableLayoutKit; |
|
import com.fanruan.api.design.util.GUICoreKit; |
|
import com.fanruan.api.design.work.DatabaseConnectionPane; |
|
import com.fanruan.api.generic.Runner; |
|
import com.fanruan.api.util.IOKit; |
|
import com.fr.design.dialog.DialogActionAdapter; |
|
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 UITextField portNumberField; |
|
private UIPasswordField passwordTextField; |
|
private UICheckBox clusterModeCheckBox; |
|
|
|
|
|
@Override |
|
protected JPanel mainPanel() { |
|
JPanel pane = new JPanel(); |
|
pane.setLayout(new BorderLayout()); |
|
hostTextField = new UITextField(); |
|
portNumberField = new UITextField(); |
|
passwordTextField = new UIPasswordField(); |
|
clusterModeCheckBox = new UICheckBox(DesignKit.i18nText("Plugin-Redis_Cluster_Mode"), false); |
|
|
|
JPanel globalConfigPane = new JPanel(); |
|
GridLayout gridLayout = new GridLayout(1, 2); |
|
globalConfigPane.setLayout(gridLayout); |
|
|
|
|
|
UIButton helpButton = new UIButton(); |
|
helpButton.setIcon(IOKit.readIcon("/com/fr/plugin/db/redis/images/help.png")); |
|
helpButton.addActionListener(new ActionListener() { |
|
@Override |
|
public void actionPerformed(ActionEvent e) { |
|
JOptionPane.showMessageDialog( |
|
SwingUtilities.getWindowAncestor(RedisConnectionPane.this), |
|
DesignKit.i18nText("Plugin-Redis_Cluster_Config_Description"), |
|
DesignKit.i18nText("Plugin-Redis_Connect_Cluster_Description"), |
|
JOptionPane.INFORMATION_MESSAGE |
|
); |
|
} |
|
}); |
|
|
|
Component[][] components = new Component[][]{ |
|
{new UILabel(DesignKit.i18nText("Plugin-Redis_Host") + ":"), |
|
GUICoreKit.createBorderLayoutPane(hostTextField, BorderLayout.CENTER, |
|
GUICoreKit.createBorderLayoutPane( |
|
clusterModeCheckBox, BorderLayout.CENTER, |
|
helpButton, BorderLayout.EAST |
|
), BorderLayout.EAST)}, |
|
{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.setText(ob.getPort()); |
|
passwordTextField.setText(ob.getPassword()); |
|
clusterModeCheckBox.setSelected(ob.isCluster()); |
|
} |
|
|
|
@Override |
|
protected com.fr.plugin.db.redis.core.RedisDatabaseConnection updateSubDatabaseConnectionBean() { |
|
RedisDatabaseConnection connection = new RedisDatabaseConnection(); |
|
connection.setHost(hostTextField.getText()); |
|
connection.setPort(portNumberField.getText()); |
|
connection.setPassword(passwordTextField.getText()); |
|
connection.setCluster(clusterModeCheckBox.isSelected()); |
|
return connection; |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return "Redis"; |
|
} |
|
} |