帆软报表设计器源代码。
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.

193 lines
7.5 KiB

package com.fr.start;
import com.fr.base.FRContext;
import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.UIDialog;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextarea.DescriptionTextArea;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.ActiveKeyGenerator;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.OperatingSystem;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URI;
import java.util.Locale;
public class CollectUserInformationDialog extends UIDialog {
private static final String CN_LOGIN_HTML = "http://www.finereport.com/products/frlogin";
private static final String EN_LOGIN_HTML = "http://www.finereport.com/en/frlogin";
private static final String TW_LOGIN_HTML = "http://www.finereport.com/tw/products/frlogin";
private static final String JP_LOGIN_HTML = "http://www.finereport.com/jp/products/frlogin";
private static final int ONLINE_VERIFY_TIMEOUT = 30 * 1000;
private UITextField keyTextField;
private DescriptionTextArea descriptionTextArea;
public CollectUserInformationDialog(Frame parent) {
super(parent);
this.initComponents();
this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
protected void initComponents() {
JPanel defaultPane = (JPanel) this.getContentPane();
defaultPane.setLayout(FRGUIPaneFactory.createM_BorderLayout());
defaultPane.setBorder(BorderFactory.createEmptyBorder(2, 4, 4, 4));
this.applyClosingAction();
//this.applyEscapeAction();
JPanel centPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
defaultPane.add(centPane, BorderLayout.CENTER);
// marks:topPane
JPanel topPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
centPane.add(topPane, BorderLayout.NORTH);
topPane.setBorder(BorderFactory.createTitledBorder(null,
Inter.getLocText("Collect-Enter_your_user_information_code(It's_free_to_get_from_product's_official_website)"),
TitledBorder.LEADING, TitledBorder.TOP));
JPanel keyPane = new JPanel(new BorderLayout(4, 4));
keyPane.setBorder(BorderFactory.createEmptyBorder(32, 2, 32, 2));
topPane.add(keyPane);
UILabel avctivenumberLabel = new UILabel();
avctivenumberLabel.setText(Inter.getLocText("FR-Designer-Collect_Information_free") + ":");
keyPane.add(avctivenumberLabel, BorderLayout.WEST);
keyTextField = new UITextField();
keyPane.add(keyTextField, BorderLayout.CENTER);
keyTextField.setMaximumSize(new Dimension(keyTextField.getPreferredSize().width, 25));
macSystemHit(keyPane);
UIButton getKeyButton = new UIButton(
Inter.getLocText("Collect-Click!_Get_user_information_code"));
getKeyButton.setMnemonic('F');
keyPane.add(getKeyButton, BorderLayout.EAST);
getKeyButton.addActionListener(actionListener);
descriptionTextArea = new DescriptionTextArea();
descriptionTextArea.setRows(5);
descriptionTextArea.setBorder(
BorderFactory.createTitledBorder(Inter.getLocText("FR-Designer-Collect_Information_Description")));
descriptionTextArea.setText(Inter.getLocText("Collect-User_Information_DES"));
UIScrollPane scrollPane = new UIScrollPane(descriptionTextArea);
scrollPane.setBorder(null);
centPane.add(scrollPane, BorderLayout.CENTER);
defaultPane.add(this.createControlButtonPane(), BorderLayout.SOUTH);
this.setTitle(Inter.getLocText("Collect-Collect_User_Information"));
this.setSize(480, 300);
this.setModal(true);
GUICoreUtils.centerWindow(this);
}
private void macSystemHit(JPanel keyPane) {
if(OperatingSystem.isMacOS()) {
UITextArea macHit = new UITextArea();
macHit.setText(Inter.getLocText("FR-Designer-Collect_OSXTips"));
macHit.setEditable(false);
keyPane.add(macHit, BorderLayout.SOUTH);
}
}
protected void applyClosingAction() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
getKeyAction();
}
});
}
ActionListener actionListener = new ActionListener() {
public void actionPerformed(final ActionEvent e) {
getKeyAction();
}
};
private void getKeyAction(){
Locale locale = FRContext.getLocale();
String url = EN_LOGIN_HTML;
if (ComparatorUtils.equals(locale, Locale.TAIWAN))
{
url = TW_LOGIN_HTML;
}
if (ComparatorUtils.equals(locale, Locale.CHINA))
{
url = CN_LOGIN_HTML;
}
if (ComparatorUtils.equals(locale, Locale.JAPAN))
{
url = JP_LOGIN_HTML;
}
try {
Desktop.getDesktop().browse(new URI(url));
} catch (Exception ioe) {
}
};
public String getKey() {
return this.keyTextField.getText().trim();
}
protected JPanel createControlButtonPane() {
JPanel controlPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
JPanel buttonsPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
controlPane.add(buttonsPane, BorderLayout.EAST);
UIButton finishButton = new UIButton(Inter.getLocText("Collect-Use_Designer"));
finishButton.setMnemonic('F');
buttonsPane.add(finishButton);
finishButton.addActionListener(verifyActionListener);
UIButton exitButton = new UIButton(Inter.getLocText("Utils-Exit_Designer"));
exitButton.setMnemonic('E');
buttonsPane.add(exitButton);
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.exit(0);
}
});
// set default pane.
this.getRootPane().setDefaultButton(finishButton);
return controlPane;
}
private ActionListener verifyActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String keyValue = CollectUserInformationDialog.this.getKey();
String message;
if (ActiveKeyGenerator.verify(keyValue, ONLINE_VERIFY_TIMEOUT)) {
message = Inter.getLocText("FR-Designer-Collect_Information_Successfully");
JOptionPane.showMessageDialog(CollectUserInformationDialog.this, message);
DesignerEnvManager.getEnvManager().setActivationKey(keyValue);
doOK();
} else {
message = Inter.getLocText("Collect-The_user_information_code_is_invalid");
JOptionPane.showMessageDialog(CollectUserInformationDialog.this, message);
}
}
};
/**
* 检测是否合法输入
*
* @throws Exception 抛出异常
*
*/
public void checkValid() throws Exception {
}
}