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
193 lines
7.5 KiB
9 years ago
|
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 {
|
||
|
}
|
||
|
}
|