Browse Source

组件兼容

remotes/1611766341912730171/master
richie 5 years ago
parent
commit
e978dfa13c
  1. 5
      src/main/java/com/fanruan/api/design/macro/UIConstants.java
  2. 11
      src/main/java/com/fanruan/api/design/ui/component/UIRoundedBorder.java
  3. 72
      src/main/java/com/fanruan/api/design/ui/component/UITitledBorder.java
  4. 6
      src/main/java/com/fanruan/api/design/ui/container/DialogActionAdapter.java
  5. 244
      src/main/java/com/fanruan/api/design/work/DatabaseConnectionPane.java
  6. 14
      src/main/java/com/fanruan/api/macro/EncodeConstants.java

5
src/main/java/com/fanruan/api/design/macro/UIConstants.java

@ -12,6 +12,11 @@ public interface UIConstants {
*/
Color LINE_COLOR = new Color(153, 153, 153);
/**
* 带标题的边框的颜色
*/
Color TITLED_BORDER_COLOR = new Color(0xe8e8e9);
/**
* 圆角弧度
*/

11
src/main/java/com/fanruan/api/design/ui/component/UIRoundedBorder.java

@ -1,11 +1,12 @@
package com.fanruan.api.design.ui.component;
import java.awt.*;
/*
* UI组件的边框
* */
public class UIRoundedBorder extends com.fr.design.border.UIRoundedBorder{
public UIRoundedBorder(Color color){
/**
* 圆角形状的边框
*/
public class UIRoundedBorder extends com.fr.design.border.UIRoundedBorder {
public UIRoundedBorder(Color color) {
super(color);
}

72
src/main/java/com/fanruan/api/design/ui/component/UITitledBorder.java

@ -0,0 +1,72 @@
package com.fanruan.api.design.ui.component;
import com.fanruan.api.design.macro.UIConstants;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-08-30
* 带标题的边框
*/
public class UITitledBorder extends TitledBorder {
private static final long serialVersionUID = 1L;
public static UITitledBorder createBorderWithTitle(String title) {
return new UITitledBorder(title);
}
public static UITitledBorder createBorderWithTitle(String title, int roundedCorner) {
return new UITitledBorder(title, roundedCorner);
}
private UITitledBorder(String title) {
super(
BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(
0,
0,
5,
0),
new UIRoundedBorder(
UIConstants.TITLED_BORDER_COLOR,
1,
10)
),
title,
TitledBorder.LEADING,
TitledBorder.TOP,
null,
new Color(1, 159, 222)
);
}
/**
* @param title title
* @param roundedCorner corner width 圆弧宽度即圆角直径
*/
private UITitledBorder(String title, int roundedCorner) {
super(
BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(
0,
0,
5,
0),
new UIRoundedBorder(
UIConstants.TITLED_BORDER_COLOR,
1,
roundedCorner)
),
title,
TitledBorder.LEADING,
TitledBorder.TOP,
null,
new Color(1, 159, 222)
);
}
}

6
src/main/java/com/fanruan/api/design/ui/container/DialogActionAdapter.java

@ -1,8 +1,8 @@
package com.fanruan.api.design.ui.container;
import com.fr.design.layout.FRGUIPaneFactory;
public class DialogActionAdapter extends com.fr.design.dialog.DialogActionAdapter{
public DialogActionAdapter(){
public class DialogActionAdapter extends com.fr.design.dialog.DialogActionAdapter {
public DialogActionAdapter() {
}
}

244
src/main/java/com/fanruan/api/design/work/DatabaseConnectionPane.java

@ -1,7 +1,249 @@
package com.fanruan.api.design.work;
import com.fanruan.api.design.ui.component.UIButton;
import com.fanruan.api.design.ui.component.UIComboBox;
import com.fanruan.api.design.ui.component.UILabel;
import com.fanruan.api.design.ui.container.BasicBeanPane;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.macro.EncodeConstants;
import com.fanruan.api.util.ArrayKit;
import com.fanruan.api.util.StringKit;
import com.fr.data.impl.Connection;
import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.impl.JNDIDatabaseConnection;
import com.fr.data.operator.DataOperator;
import com.fr.design.data.datapane.connect.JDBCDefPane;
import com.fr.design.data.datapane.connect.JNDIDefPane;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.scrollruler.ModLineBorder;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*;
public abstract class DatabaseConnectionPane extends com.fr.design.data.datapane.connect.DatabaseConnectionPane{
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* 数据连接面板
*
* @param <E> 数据连接类型
*/
public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connection> extends BasicBeanPane<Connection> {
private UILabel message;
private UIButton okButton;
private UIButton cancelButton;
private JDialog dialog;
private UILabel uiLabel;
private UIComboBox<String> charSetComboBox;
private String originalCharSet = null;
public DatabaseConnectionPane() {
this.initComponents();
}
protected void initComponents() {
message = new UILabel();
uiLabel = new UILabel();
okButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_OK"));
cancelButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cancel"));
String[] defaultEncode = new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Encode_Auto")};
charSetComboBox = new UIComboBox<>(ArrayKit.addAll(defaultEncode, EncodeConstants.ENCODING_ARRAY));
this.setLayout(new BorderLayout());
JPanel northPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane();
this.add(northPane, BorderLayout.NORTH);
JPanel testPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane();
northPane.add(testPane, BorderLayout.NORTH);
UIButton testButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Test_Connection"));
testPane.add(testButton);
testButton.addActionListener(testConnectionActionListener);
testPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 3, 4));
northPane.add(mainPanel(), BorderLayout.CENTER);
JPanel chartSetPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2);
northPane.add(chartSetPane);
chartSetPane.setBorder(BorderFactory.createTitledBorder(
new ModLineBorder(ModLineBorder.TOP),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Advanced")
));
chartSetPane.add(GUICoreUtils.createNamedPane(charSetComboBox, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Charset") + ":"));
}
protected abstract JPanel mainPanel();
@Override
public void populateBean(com.fr.data.impl.Connection ob) {
this.originalCharSet = ob.getOriginalCharsetName();
if (StringKit.isBlank(originalCharSet)) {
this.charSetComboBox.setSelectedItem(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Encode_Auto"));
} else {
this.charSetComboBox.setSelectedItem(ob.getOriginalCharsetName());
}
populateSubDatabaseConnectionBean((E) ob);
}
protected abstract void populateSubDatabaseConnectionBean(E ob);
@Override
public com.fr.data.impl.Connection updateBean() {
E ob = updateSubDatabaseConnectionBean();
ob.setOriginalCharsetName(this.originalCharSet);
if (this.charSetComboBox.getSelectedIndex() == 0) {
ob.setNewCharsetName(null);
ob.setOriginalCharsetName(null);
} else {
ob.setNewCharsetName(EncodeConstants.ENCODING_GBK);
ob.setOriginalCharsetName(((String) this.charSetComboBox.getSelectedItem()));
}
return ob;
}
protected abstract E updateSubDatabaseConnectionBean();
ActionListener testConnectionActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
final SwingWorker connectionThread = new SwingWorker() {
protected Object doInBackground() throws Exception {
try {
com.fr.data.impl.Connection database = DatabaseConnectionPane.this.updateBean();
boolean connect = DataOperator.getInstance().testConnection(database);
okButton.setEnabled(true);
message.setText(database.connectMessage(connect));
if (connect) {
uiLabel.setIcon(UIManager.getIcon("OptionPane.informationIcon"));
message.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Connection_Successfully"));
} else {
uiLabel.setIcon(UIManager.getIcon("OptionPane.errorIcon"));
message.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connection_Failed"));
}
} catch (Exception exp) {
LogKit.error(exp.getMessage(), exp);
}
return null;
}
};
connectionThread.execute();
initDialogPane();
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
connectionThread.cancel(true);
}
});
dialog.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
connectionThread.cancel(true);
}
});
dialog.show();
dialog.dispose();
}
};
private void initDialogPane() {
message.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Test_Connection") + "...");
message.setBorder(BorderFactory.createEmptyBorder(8, 5, 0, 0));
okButton.setEnabled(false);
dialog = new JDialog((Dialog) SwingUtilities.getWindowAncestor(DatabaseConnectionPane.this), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Test_Connection"), true);
dialog.setSize(new Dimension(268, 118));
okButton.setEnabled(false);
JPanel jp = new JPanel();
JPanel upPane = new JPanel();
JPanel downPane = new JPanel();
uiLabel = new UILabel(UIManager.getIcon("OptionPane.informationIcon"));
upPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
upPane.add(uiLabel);
upPane.add(message);
downPane.setLayout(new FlowLayout(FlowLayout.CENTER, 6, 0));
downPane.add(okButton);
downPane.add(cancelButton);
jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
jp.add(upPane);
jp.add(downPane);
dialog.add(jp);
dialog.setResizable(false);
dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(DatabaseConnectionPane.this));
}
public static class JDBC extends com.fr.design.data.datapane.connect.DatabaseConnectionPane<JDBCDatabaseConnection> {
private static JDBCDefPane jdbcDefPane = new JDBCDefPane();
@Override
protected JPanel mainPanel() {
return jdbcDefPane;
}
@Override
protected boolean isFineBI() {
return false;
}
@Override
protected void populateSubDatabaseConnectionBean(JDBCDatabaseConnection ob) {
jdbcDefPane.populate(ob);
}
@Override
protected JDBCDatabaseConnection updateSubDatabaseConnectionBean() {
return jdbcDefPane.update();
}
@Override
protected String title4PopupWindow() {
return "JDBC";
}
}
public static class JNDI extends com.fr.design.data.datapane.connect.DatabaseConnectionPane<JNDIDatabaseConnection> {
private static JNDIDefPane jndiDefPane = new JNDIDefPane();
@Override
protected JPanel mainPanel() {
return jndiDefPane;
}
@Override
protected boolean isFineBI() {
return false;
}
@Override
protected void populateSubDatabaseConnectionBean(JNDIDatabaseConnection ob) {
jndiDefPane.populate(ob);
}
@Override
protected JNDIDatabaseConnection updateSubDatabaseConnectionBean() {
return jndiDefPane.update();
}
@Override
protected String title4PopupWindow() {
return "JNDI";
}
}
}

14
src/main/java/com/fanruan/api/macro/EncodeConstants.java

@ -45,4 +45,18 @@ public interface EncodeConstants {
* cp850编码
*/
String ENCODING_CP850 = com.fr.stable.EncodeConstants.ENCODING_CP850;
/**
* 所有编码的集合
*/
String[] ENCODING_ARRAY = {
ENCODING_GBK,
ENCODING_BIG5,
ENCODING_ISO_8859_1,
ENCODING_UTF_8,
ENCODING_UTF_16,
ENCODING_EUC_JP,
ENCODING_EUC_KR,
ENCODING_CP850
};
}

Loading…
Cancel
Save