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.
592 lines
26 KiB
592 lines
26 KiB
package com.fr.env; |
|
|
|
import java.awt.BorderLayout; |
|
import java.awt.Color; |
|
import java.awt.Component; |
|
import java.awt.Dimension; |
|
import java.awt.event.ActionEvent; |
|
import java.awt.event.ActionListener; |
|
import java.awt.event.KeyEvent; |
|
import java.awt.event.MouseAdapter; |
|
import java.awt.event.MouseEvent; |
|
import java.io.File; |
|
import java.util.*; |
|
|
|
import javax.swing.BorderFactory; |
|
|
|
import com.fr.design.gui.ilable.UILabel; |
|
|
|
import javax.swing.JFileChooser; |
|
import javax.swing.JOptionPane; |
|
import javax.swing.JPanel; |
|
import javax.swing.JScrollPane; |
|
import javax.swing.JTextPane; |
|
import javax.swing.JToolBar; |
|
import javax.swing.SwingUtilities; |
|
import javax.swing.ToolTipManager; |
|
import javax.swing.event.DocumentEvent; |
|
import javax.swing.event.DocumentListener; |
|
import javax.swing.event.TreeSelectionEvent; |
|
import javax.swing.event.TreeSelectionListener; |
|
import javax.swing.text.AttributeSet; |
|
import javax.swing.text.BadLocationException; |
|
import javax.swing.text.SimpleAttributeSet; |
|
import javax.swing.text.StyleConstants; |
|
|
|
import com.fr.base.BaseUtils; |
|
import com.fr.base.Env; |
|
import com.fr.base.FRContext; |
|
import com.fr.general.NameObject; |
|
import com.fr.dav.LocalEnv; |
|
import com.fr.design.DesignerEnvManager; |
|
import com.fr.design.beans.BasicBeanPane; |
|
import com.fr.design.dialog.InformationWarnPane; |
|
import com.fr.design.gui.controlpane.JListControlPane; |
|
import com.fr.design.gui.controlpane.NameObjectCreator; |
|
import com.fr.design.gui.controlpane.NameableCreator; |
|
import com.fr.design.gui.ipasswordfield.UIPassWordField; |
|
import com.fr.design.gui.itree.filetree.JFileTree; |
|
import com.fr.design.gui.ibutton.UIButton; |
|
import com.fr.design.gui.icheckbox.UICheckBox; |
|
import com.fr.design.gui.itextarea.UITextArea; |
|
import com.fr.design.gui.itextfield.UITextField; |
|
import com.fr.design.layout.FRGUIPaneFactory; |
|
import com.fr.design.layout.TableLayout; |
|
import com.fr.design.layout.TableLayoutHelper; |
|
import com.fr.design.mainframe.DesignerContext; |
|
import com.fr.design.scrollruler.ModLineBorder; |
|
import com.fr.file.filter.OnlyShowDirectoryFileFilter; |
|
import com.fr.general.ComparatorUtils; |
|
import com.fr.general.Inter; |
|
import com.fr.stable.Nameable; |
|
import com.fr.stable.ProductConstants; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.stable.core.PropertyChangeAdapter; |
|
|
|
public class EnvListPane extends JListControlPane { |
|
public EnvListPane() { |
|
super(); |
|
addEditingListner(new PropertyChangeAdapter() { |
|
public void propertyChange() { |
|
String tempName = getEditingName(); |
|
String[] allListNames = nameableList.getAllNames(); |
|
allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; |
|
if (StringUtils.isEmpty(tempName)) { |
|
String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; |
|
String[] sign = new String[]{",", "!"}; |
|
nameableList.stopEditing(); |
|
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(EnvListPane.this), Inter.getLocText(warning, sign)); |
|
setWarnigText(editingIndex); |
|
return; |
|
} |
|
if (!ComparatorUtils.equals(tempName, selectedName) && isNameRepeted(new List[]{Arrays.asList(allListNames)}, tempName)) { |
|
String[] waning = new String[]{"already_exists", "Utils-Report_Runtime_Env", "Please_Rename"}; |
|
String[] sign = new String[]{"", tempName + ",", "!"}; |
|
nameableList.stopEditing(); |
|
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(EnvListPane.this), Inter.getLocText(waning, sign)); |
|
setWarnigText(editingIndex); |
|
return; |
|
} |
|
} |
|
}); |
|
} |
|
|
|
/** |
|
* 生成添加按钮的NameableCreator |
|
* |
|
* @return 返回添加按钮的NameableCreator |
|
*/ |
|
public NameableCreator[] createNameableCreators() { |
|
NameableCreator local = new NameObjectCreator(Inter.getLocText("Env-Local_Directory"), "com/fr/design/images/data/bind/localconnect.png", |
|
LocalEnv.class, LocalEnvPane.class); |
|
NameableCreator remote = new NameObjectCreator(Inter.getLocText("Env-Remote_Server"), "com/fr/design/images/data/bind/distanceconnect.png", |
|
RemoteEnv.class, RemoteEnvPane.class); |
|
return new NameableCreator[]{local, remote}; |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return Inter.getLocText("Env-Configure_Workspace"); |
|
} |
|
|
|
/** |
|
* 弹出选中环境的面板 |
|
* |
|
* @param selectedEnv 选中的环境 |
|
*/ |
|
public void populateEnvManager(String selectedEnv) { |
|
DesignerEnvManager mgr = DesignerEnvManager.getEnvManager(); |
|
Iterator<String> nameIt = mgr.getEnvNameIterator(); |
|
List<NameObject> nameObjectList = new ArrayList<NameObject>(); |
|
nameIt.hasNext(); |
|
while (nameIt.hasNext()) { |
|
String name = nameIt.next(); |
|
nameObjectList.add(new NameObject(name, mgr.getEnv(name))); |
|
} |
|
|
|
this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); |
|
|
|
if (StringUtils.isBlank(selectedEnv)) { |
|
selectedEnv = mgr.getCurEnvName(); |
|
} |
|
this.setSelectedName(selectedEnv); |
|
} |
|
|
|
|
|
/** |
|
* 更新designerEnvManager里面所有的Env |
|
* |
|
* @return 返回选中的环境的名字 |
|
*/ |
|
public String updateEnvManager() { |
|
DesignerEnvManager mgr = DesignerEnvManager.getEnvManager(); |
|
mgr.clearAllEnv(); |
|
Nameable[] res = this.update(); |
|
NameObject[] envNameObjectArray = new NameObject[res.length]; |
|
java.util.Arrays.asList(res).toArray(envNameObjectArray); |
|
for (int i = 0; i < envNameObjectArray.length; i++) { |
|
NameObject nameObject = envNameObjectArray[i]; |
|
mgr.putEnv(nameObject.getName(), (Env) nameObject.getObject()); |
|
} |
|
|
|
return this.getSelectedName(); |
|
} |
|
|
|
public static class LocalEnvPane extends BasicBeanPane<LocalEnv> { |
|
|
|
private UITextField pathTextField; |
|
private JFileTree localEnvTree; |
|
|
|
public LocalEnvPane() { |
|
this.setLayout(FRGUIPaneFactory.createM_BorderLayout()); |
|
|
|
// northPane |
|
JPanel northPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
|
this.add(northPane, BorderLayout.NORTH); |
|
|
|
northPane.add(new UILabel(Inter.getLocText("Location") + ":"), BorderLayout.WEST); |
|
northPane.add(pathTextField = new UITextField(), BorderLayout.CENTER); |
|
|
|
// 删除选择文件按钮 添加JFileTree |
|
|
|
// centerPane |
|
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
|
this.add(centerPane, BorderLayout.CENTER); |
|
|
|
// 添加JFileTree |
|
localEnvTree = new JFileTree(); |
|
JScrollPane localEnvPane = new JScrollPane(localEnvTree); |
|
centerPane.add(localEnvPane, BorderLayout.CENTER); |
|
|
|
// 设置根路径File 和 文件过滤类型 |
|
localEnvTree.setFileFilter(new OnlyShowDirectoryFileFilter()); |
|
localEnvTree.setRootFiles(File.listRoots()); |
|
localEnvTree.addTreeSelectionListener(new TreeSelectionListener() { |
|
|
|
@Override |
|
public void valueChanged(TreeSelectionEvent e) { |
|
pathTextField.setText(localEnvTree.getSelectedFile().getPath()); |
|
} |
|
}); |
|
|
|
UITextArea description = new UITextArea(); |
|
centerPane.add(description, BorderLayout.SOUTH); |
|
description.setText(Inter.getLocText("Env-Des1")); |
|
description.setEditable(false); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return Inter.getLocText("Location"); |
|
} |
|
|
|
@Override |
|
public LocalEnv updateBean() { |
|
String path = pathTextField.getText(); |
|
return LocalEnv.createEnv(path); |
|
} |
|
|
|
public String getPath() { |
|
return pathTextField.getText(); |
|
} |
|
|
|
@Override |
|
public void populateBean(LocalEnv ob) { |
|
if (StringUtils.isBlank(ob.getPath())) { |
|
return; |
|
} |
|
pathTextField.setText(ob.getPath()); |
|
|
|
final File tmpFile = new File(ob.getPath()); |
|
localEnvTree.selectFile(tmpFile); |
|
localEnvTree.setEnabled(true); |
|
} |
|
} |
|
|
|
public static class RemoteEnvPane extends BasicBeanPane<RemoteEnv> { |
|
public static final int HTTPS_HOST_INDEX = 8; |
|
public static final int HTTP_HOST_INDEX = 7; |
|
|
|
private UICheckBox httpsCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Https_Enable")); |
|
private UITextField servletPathField = new UITextField(); |
|
private UITextField hostNameField = new UITextField(); |
|
private UITextField portNameField = new UITextField(); |
|
private UITextField webApplyField = new UITextField(); |
|
private UITextField servletField = new UITextField(); |
|
private UITextField userTextField = new UITextField(); |
|
private UIPassWordField passwordTextField = new UIPassWordField(); |
|
private UITextField certificatePath = new UITextField(); |
|
private UIPassWordField certificatePass = new UIPassWordField(); |
|
private UIButton chooseDirBtn = new UIButton("..."); |
|
private String envPath; |
|
private String hint; |
|
|
|
// 各种参数面板 |
|
private JPanel northPane; |
|
// 提示面板 |
|
private JPanel previewPane; |
|
// 面板的所有组件 |
|
private Component[][] coms; |
|
DocumentListener docListener = new DocumentListener() { |
|
|
|
@Override |
|
public void changedUpdate(DocumentEvent e) { |
|
showServletPathField(httpsCheckBox.isSelected()); |
|
} |
|
|
|
@Override |
|
public void insertUpdate(DocumentEvent e) { |
|
showServletPathField(httpsCheckBox.isSelected()); |
|
} |
|
|
|
@Override |
|
public void removeUpdate(DocumentEvent e) { |
|
showServletPathField(httpsCheckBox.isSelected()); |
|
} |
|
}; |
|
|
|
private void setHttpsState(boolean enable){ |
|
chooseDirBtn.setEnabled(enable); |
|
DesignerEnvManager.getEnvManager().setHttps(enable); |
|
} |
|
|
|
public RemoteEnvPane() { |
|
this.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), Inter.getLocText("Config_Servlet"))); |
|
this.setLayout(FRGUIPaneFactory.createM_BorderLayout()); |
|
// 位置 |
|
JPanel servletPathPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
servletPathPane.add(new UILabel(Inter.getLocText("Server_Path") + ":")); |
|
servletPathField.setEditable(false); |
|
|
|
hostNameField.getDocument().addDocumentListener(docListener); |
|
portNameField.getDocument().addDocumentListener(docListener); |
|
webApplyField.getDocument().addDocumentListener(docListener); |
|
servletField.getDocument().addDocumentListener(docListener); |
|
|
|
// 主机名 |
|
JPanel servletNamePane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
servletNamePane.add(new UILabel(Inter.getLocText("Host_Name") + "/IP" + ":")); |
|
// 端口 |
|
JPanel portNamePane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
portNamePane.add(new UILabel(Inter.getLocText("Port") + ":")); |
|
// web应用 |
|
JPanel webApplyPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
webApplyPane.add(new UILabel(Inter.getLocText("Web_Apply") + ":")); |
|
// servlet |
|
JPanel servletPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
servletPane.add(new UILabel("Servlet" + ":")); |
|
// 用户名 |
|
JPanel userNamePane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
userNamePane.add(new UILabel(Inter.getLocText("Username") + ":")); |
|
// 密码 |
|
JPanel passWordPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
passWordPane.add(new UILabel(Inter.getLocText("Password") + ":")); |
|
// https证书路径 |
|
JPanel certificatePathPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
certificatePathPane.add(new UILabel(Inter.getLocText("FR-Designer_Certificate_Path")+ ":")); |
|
// https秘钥 |
|
JPanel certificatePassPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
certificatePassPane.add(new UILabel(Inter.getLocText("FR-Designer_Certificate_Pass") + ":")); |
|
|
|
//输入密码的时候检测下大写锁定 |
|
passwordTextField.addMouseListener(new MouseAdapter() { |
|
public void mouseEntered(MouseEvent e) { |
|
if (java.awt.Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)) { |
|
hint = Inter.getLocText("CapsLock"); |
|
} else { |
|
hint = null; |
|
} |
|
ToolTipManager.sharedInstance().setInitialDelay(100); |
|
passwordTextField.setToolTipText(hint); |
|
} |
|
}); |
|
|
|
coms = new Component[][]{ |
|
new Component[]{initHttpsCheckBoxPane(),new UILabel()}, |
|
new Component[]{servletPathPane, initServletNameToolBar()}, |
|
new Component[]{servletNamePane, hostNameField}, |
|
new Component[]{portNamePane, portNameField}, |
|
new Component[]{webApplyPane, webApplyField}, |
|
new Component[]{servletPane, servletField}, |
|
new Component[]{userNamePane, userTextField}, |
|
new Component[]{passWordPane, passwordTextField}, |
|
new Component[]{certificatePathPane,initHttpsPane()}, |
|
new Component[]{certificatePassPane,certificatePass} |
|
}; |
|
|
|
setHttpsState(httpsCheckBox.isSelected()); |
|
initNorthPane(true); |
|
initCenterPane(); |
|
this.add(northPane, BorderLayout.NORTH); |
|
this.add(previewPane, BorderLayout.CENTER); |
|
} |
|
|
|
private JToolBar initServletNameToolBar(){ |
|
JToolBar servletNameToolBar = new JToolBar(); |
|
|
|
servletNameToolBar.setFloatable(false); |
|
servletNameToolBar.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
|
|
servletNameToolBar.add(this.servletPathField); |
|
UIButton testConnctionButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/m_web/cache.png")); |
|
testConnctionButton.setToolTipText(Inter.getLocText("Datasource-Test_Connection")); |
|
servletNameToolBar.add(testConnctionButton, BorderLayout.EAST); |
|
|
|
testConnctionButton.addActionListener(new ActionListener() { |
|
@Override |
|
public void actionPerformed(ActionEvent ev) { |
|
if (testConnection()) { |
|
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(RemoteEnvPane.this), Inter.getLocText("Datasource-Connection_successfully")); |
|
} |
|
} |
|
}); |
|
|
|
return servletNameToolBar; |
|
} |
|
|
|
private void initCenterPane(){ |
|
// centerPane |
|
previewPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
|
previewPane.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), Inter.getLocText("Note"))); |
|
|
|
JTextPane previewTextArea = new JTextPane(); |
|
|
|
// e:当行的长度大于所分配的宽度时,将换行. |
|
// previewTextArea.setLineWrap(true); |
|
previewTextArea.setEditable(false); |
|
previewTextArea.setText(Inter.getLocText("Env-Des2")); |
|
try { |
|
previewTextArea.getDocument().insertString(previewTextArea.getText().length(), Inter.getLocText("Env_Des"), this.getRedSytleAttribute()); |
|
} catch (BadLocationException e) { |
|
FRContext.getLogger().error(e.getMessage(), e); |
|
} |
|
previewPane.add(new JScrollPane(previewTextArea), BorderLayout.CENTER); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return "Remote"; |
|
} |
|
|
|
private JPanel initHttpsPane(){ |
|
JPanel httpsPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
httpsPane.setLayout(FRGUIPaneFactory.createBorderLayout()); |
|
httpsPane.add(certificatePath,BorderLayout.CENTER); |
|
httpsPane.add(chooseDirBtn, BorderLayout.EAST); |
|
chooseDirBtn.setPreferredSize(new Dimension(25, 25)); |
|
chooseDirBtn.addActionListener(new ActionListener() { |
|
public void actionPerformed(ActionEvent evt) { |
|
JFileChooser fileChooser = new JFileChooser(); |
|
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); |
|
int saveValue = fileChooser.showOpenDialog(DesignerContext.getDesignerFrame()); |
|
if (saveValue == JFileChooser.APPROVE_OPTION) { |
|
File selectedFile = fileChooser.getSelectedFile(); |
|
certificatePath.setText(selectedFile.getAbsolutePath()); |
|
} |
|
} |
|
}); |
|
return httpsPane; |
|
} |
|
|
|
private JPanel initHttpsCheckBoxPane(){ |
|
JPanel checkBoxPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); |
|
checkBoxPane.add(httpsCheckBox); |
|
httpsCheckBox.addActionListener(new ActionListener() { |
|
@Override |
|
public void actionPerformed(ActionEvent e) { |
|
boolean isHttps = httpsCheckBox.isSelected(); |
|
DesignerEnvManager manager = DesignerEnvManager.getEnvManager(); |
|
manager.setHttps(isHttps); |
|
setHttpsState(isHttps); |
|
updateNorthPane(isHttps); |
|
} |
|
}); |
|
return checkBoxPane; |
|
} |
|
|
|
private void setHttpsParas(){ |
|
System.setProperty("javax.net.ssl.trustStore", this.certificatePath.getText()); |
|
System.setProperty("javax.net.ssl.trustStorePassword", new String(this.certificatePass.getPassword())); |
|
DesignerEnvManager manager = DesignerEnvManager.getEnvManager(); |
|
manager.setCertificatePath(this.certificatePath.getText()); |
|
manager.setCertificatePass(new String(this.certificatePass.getPassword())); |
|
manager.setHttps(this.httpsCheckBox.isSelected()); |
|
} |
|
|
|
private boolean testConnection() { |
|
RemoteEnv env = new RemoteEnv(); |
|
String url = servletPathField.getText(); |
|
env.setPath(url); |
|
env.setUser(userTextField.getText()); |
|
env.setPassword(new String(passwordTextField.getPassword())); |
|
boolean connect = false; |
|
try { |
|
if (!StringUtils.isBlank(servletPathField.getText().trim())) { |
|
if(url.startsWith("https:") && !this.httpsCheckBox.isSelected()){ |
|
JOptionPane.showMessageDialog(this, Inter.getLocText("Datasource-Connection_failed")); |
|
return false; |
|
} |
|
if(url.startsWith("https:")){ |
|
setHttpsParas(); |
|
} |
|
connect = env.testConnectionWithOutRegisteServer(this); |
|
} |
|
} catch (Exception e) { |
|
JOptionPane.showMessageDialog(this, Inter.getLocText("Datasource-Connection_failed")); |
|
FRContext.getLogger().error(e.getMessage(), e); |
|
} |
|
if (connect) { |
|
try { |
|
String remoteVersion = env.getDesignerVersion(); |
|
if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { |
|
String infor = Inter.getLocText("Server-version-tip") + "。"; |
|
String moreInfo = Inter.getLocText("Server-version-tip-moreInfo") + "。"; |
|
new InformationWarnPane(infor, moreInfo, Inter.getLocText("Tooltips")).show(); |
|
return false; |
|
} |
|
} catch (Exception e) { |
|
FRContext.getLogger().error(e.getMessage(), e); |
|
} |
|
|
|
} |
|
|
|
return connect; |
|
} |
|
|
|
private AttributeSet getRedSytleAttribute() { |
|
SimpleAttributeSet ds = new SimpleAttributeSet(); |
|
StyleConstants.setForeground(ds, Color.red); |
|
return ds; |
|
} |
|
|
|
/** |
|
* 显示show the content of serverPathFiled |
|
* @param isHttps 是否启用https |
|
*/ |
|
public void showServletPathField(boolean isHttps) { |
|
String s = StringUtils.isBlank(webApplyField.getText()) ? "" : "/", t = StringUtils.isBlank(servletField.getText()) ? "" : "/", colon = StringUtils.isBlank(portNameField.getText()) ? "" |
|
: ":"; |
|
String prefix = isHttps ? "https://" : "http://"; |
|
servletPathField.setText(prefix + hostNameField.getText() + colon + portNameField.getText() + s + webApplyField.getText() + t + servletField.getText()); |
|
} |
|
|
|
@Override |
|
public void populateBean(RemoteEnv ob) { |
|
envPath = ob.getPath(); |
|
boolean isHttps = false; |
|
if(envPath != null){ |
|
isHttps = envPath.startsWith("https"); |
|
httpsCheckBox.setSelected(isHttps); |
|
setHttpsState(isHttps); |
|
} |
|
updateNorthPane(isHttps); |
|
if (envPath == null || ComparatorUtils.equals(envPath, StringUtils.EMPTY)) { |
|
this.hostNameField.setText(StringUtils.EMPTY); |
|
this.portNameField.setText(StringUtils.EMPTY); |
|
this.webApplyField.setText(StringUtils.EMPTY); |
|
this.servletField.setText(StringUtils.EMPTY); |
|
this.servletPathField.setText(StringUtils.EMPTY); |
|
this.httpsCheckBox.setSelected(false); |
|
} else { |
|
DesignerEnvManager manager = DesignerEnvManager.getEnvManager(); |
|
this.certificatePath.setText(manager.getCertificatePath()); |
|
this.certificatePass.setText(manager.getCertificatePass()); |
|
// 第二次出现":"的地方,port位置起始点 |
|
int secondTime = envPath.indexOf(":", envPath.indexOf(":") + 1); |
|
// 第三次出现"/"的地方 |
|
int thirdTime = envPath.indexOf("/", secondTime + 1); |
|
// 最后出现"/"的地方 |
|
int lastTime = envPath.lastIndexOf("/"); |
|
String hostName = isHttps ? envPath.substring(HTTPS_HOST_INDEX, secondTime) : envPath.substring(HTTP_HOST_INDEX, secondTime); |
|
this.hostNameField.setText(hostName); |
|
if (thirdTime < 0) { |
|
this.portNameField.setText(envPath.substring(secondTime + 1)); |
|
this.webApplyField.setText(StringUtils.EMPTY); |
|
} else { |
|
this.portNameField.setText(envPath.substring(secondTime + 1, thirdTime)); |
|
if (thirdTime == lastTime) { |
|
this.webApplyField.setText(StringUtils.EMPTY); |
|
} else { |
|
this.webApplyField.setText(envPath.substring(thirdTime + 1, lastTime)); |
|
} |
|
this.servletField.setText(envPath.substring(lastTime + 1)); |
|
} |
|
this.servletPathField.setText(envPath); |
|
} |
|
|
|
this.userTextField.setText(ob.getUser() == null ? StringUtils.EMPTY : ob.getUser()); |
|
|
|
this.passwordTextField.setText(ob.getPassword() == null ? StringUtils.EMPTY : ob.getPassword()); |
|
} |
|
|
|
private void initNorthPane(boolean isHttps){ |
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
double[] rowSize; |
|
double[] size = {p,p,p,p,p,p,p,p}; |
|
double[] httpsSize = {p,p,p,p,p,p,p,p,p,p}; |
|
if(isHttps){ |
|
rowSize = httpsSize; |
|
}else{ |
|
rowSize = size; |
|
} |
|
double[] columnSize = {p, f}; |
|
northPane = TableLayoutHelper.createTableLayoutPane(coms, rowSize, columnSize); |
|
} |
|
|
|
private void updateNorthPane(boolean isHttps){ |
|
this.removeAll(); |
|
initNorthPane(isHttps); |
|
this.add(northPane, BorderLayout.NORTH); |
|
this.add(previewPane,BorderLayout.CENTER); |
|
this.revalidate(); |
|
this.doLayout(); |
|
this.repaint(); |
|
} |
|
|
|
@Override |
|
public RemoteEnv updateBean() { |
|
String hostName = this.hostNameField.getText(); |
|
// String port = this.portNameField.getText(); |
|
String webApply = this.webApplyField.getText(); |
|
String servlet = this.servletField.getText(); |
|
String path = this.servletPathField.getText(); |
|
String user = this.userTextField.getText(); |
|
String password = new String(this.passwordTextField.getPassword()); |
|
if (isAllEmpty(new String[]{hostName, webApply, servlet})) { |
|
path = StringUtils.EMPTY; |
|
} |
|
|
|
return new RemoteEnv(path, user, password); |
|
} |
|
|
|
private boolean isAllEmpty(String[] strs) { |
|
for (int i = 0; i < strs.length; i++) { |
|
if (StringUtils.isNotEmpty(strs[i])) { |
|
return false; |
|
} |
|
} |
|
return true; |
|
} |
|
} |
|
} |