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
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 { |
|
} |
|
} |