⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serversettingpanel.java

📁 打印管理程序,测试完全通过.windows开发环境.
💻 JAVA
字号:
package jp.co.ntl.swing.ext;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.SpringLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;

import jp.co.ntl.swing.NumberField;
import jp.co.ntl.swing.SpringUtilities;
import jp.co.ntl.swing.ext.GroupPanel;

import jp.co.ntl.preference.PreferenceInfo;
import jp.co.ntl.Util;
import jp.co.ntl.ext.CheckUtil;

public class ServerSettingPanel extends AbstractDetailInfoPanel implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JLabel			lblName;
	private JTextField		txtName;
	private JLabel			lblPort;
	private NumberField	txtPort;
	private JLabel			lblPath;
	private JTextField		txtPath;
	private JLabel			lblAuthType;
	private JComboBox		cmbAuthType;
	private JLabel			lblSessionTimer;
	private NumberField	txtSessionTimer;
	private JLabel			lblSessionTimerUnit;
	private JLabel			lblCardRWAddr;
	private JTextField		txtCardRWAddr;
	private JLabel			lblFelicaSysCode;
	private NumberField	txtFelicaSysCode;
	private JCheckBox		checkHttps;
	private GroupPanel		groupCardRW;
	
	public ServerSettingPanel() {
		super(false, null);
	}
	
	protected void setParams(Object[] params) {
	}
	
	protected void buildComponents() {
		Resource.load(Util.getCurrentLocale());
		
		setLayout(new SpringLayout());
		
		JPanel	panel = new JPanel(new SpringLayout());

		lblName = new JLabel(Resource.getString(Resource.SERVER_SETTING_NAME));
		panel.add(lblName);

		txtName = new JTextField();
		txtName.setPreferredSize(new Dimension(200, 24));
		panel.add(txtName);
		
		lblPort = new JLabel(Resource.getString(Resource.SERVER_SETTING_PORT));
		panel.add(lblPort);
		
		txtPort = new NumberField(5, NumberField.UINT);
		txtPort.setPreferredSize(new Dimension(50, 24));
		panel.add(txtPort);
		
		lblPath = new JLabel(Resource.getString(Resource.SERVER_SETTING_PATH));
		panel.add(lblPath);
		
		txtPath = new JTextField();
		txtPath.setPreferredSize(new Dimension(200, 24));
		panel.add(txtPath);
		
		lblAuthType = new JLabel(Resource.getString(Resource.SERVER_SETTING_AUTHTYPE));
		panel.add(lblAuthType);
		
		String[]	items = {
			Resource.getString(Resource.SERVER_SETTING_AUTH_USB),
			Resource.getString(Resource.SERVER_SETTING_AUTH_LOGIN),
			Resource.getString(Resource.SERVER_SETTING_AUTH_NET_FELICA),
		};
		
		cmbAuthType = new JComboBox(items);
		panel.add(cmbAuthType);

		lblSessionTimer = new JLabel(Resource.getString(Resource.SERVER_SETTING_SESSION_TIMER));
		panel.add(lblSessionTimer);

		JPanel	panelSessionTimer = new JPanel();
		panelSessionTimer.setLayout(new BoxLayout(panelSessionTimer, BoxLayout.X_AXIS));
		panelSessionTimer.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
		
		txtSessionTimer = new NumberField(4, NumberField.UINT);
		txtSessionTimer.setPreferredSize(new Dimension(50, 24));
		panelSessionTimer.add(txtSessionTimer);
		
		panelSessionTimer.add(Box.createRigidArea(new Dimension(10, 0)));
		
		lblSessionTimerUnit = new JLabel(Resource.getString(Resource.SERVER_SETTING_SESSION_TIMER_UNIT));
		panelSessionTimer.add(lblSessionTimerUnit);
		
		panel.add(panelSessionTimer);
		
		SpringUtilities.makeCompactGrid(panel, panel.getComponentCount() / 2, 2, 10, 10, 10, 10);
		add(panel);
		
		groupCardRW = new GroupPanel(Resource.getString(Resource.SERVER_SETTING_CARD_RW));
		groupCardRW.setLayout(new SpringLayout());
		
		lblCardRWAddr = new JLabel(Resource.getString(Resource.SERVER_SETTING_CARD_RW_ADDR));
		groupCardRW.add(lblCardRWAddr);
		
		txtCardRWAddr = new JTextField();
		txtCardRWAddr.setPreferredSize(new Dimension(200, 24));
		groupCardRW.add(txtCardRWAddr);
		
		lblFelicaSysCode = new JLabel(Resource.getString(Resource.SERVER_SETTING_FELICA_SYS_CODE));
		groupCardRW.add(lblFelicaSysCode);
		
		txtFelicaSysCode = new NumberField(5, NumberField.UINT);
		txtFelicaSysCode.setPreferredSize(new Dimension(50, 24));
		groupCardRW.add(txtFelicaSysCode);
		
		SpringUtilities.makeCompactGrid(groupCardRW, groupCardRW.getComponentCount() / 2, 2, 20, 20, 20, 20);
		add(groupCardRW);
		
		JPanel	p2 = new JPanel(new SpringLayout());
		
		checkHttps = new JCheckBox(Resource.getString(Resource.SERVER_SETTING_HTTPS));
		p2.add(checkHttps);
		checkHttps.setEnabled(false);
		
		SpringUtilities.makeCompactGrid(p2, p2.getComponentCount(), 1, 10, 10, 10, 10);
		add(p2);
		
		SpringUtilities.makeCompactGrid(this, this.getComponentCount(), 1, 0, 0, 0, 0);
		
		setDefaultButton(OK_BUTTON);
		
		setValuesToComponent();
		
		cmbAuthType.addActionListener(this);
	}
	
	public JButton[] getButtons() {
		if (clientKind == PreferenceInfo.CLIENT_MAC) {
			return new JButton[] {
					new JButton(Resource.getString(Resource.SERVER_SETTING_CANCEL)),
					new JButton(Resource.getString(Resource.SERVER_SETTING_OK))
			};
		} else {
			return new JButton[] {
					new JButton(Resource.getString(Resource.SERVER_SETTING_OK)),
					new JButton(Resource.getString(Resource.SERVER_SETTING_CANCEL))
			};
		}
	}
	
	protected void setValuesToComponent() {
		txtName.setText(Util.getPreferenceInfo().getHost());
		txtPort.setText(Integer.toString(Util.getPreferenceInfo().getPort()));
		txtPath.setText(Util.getPreferenceInfo().getPath());
		checkHttps.setSelected(Util.getPreferenceInfo().isUseHttps());
		cmbAuthType.setSelectedIndex(Util.getPreferenceInfo().getAuthType());
		txtSessionTimer.setText(Integer.toString(Util.getPreferenceInfo().getSessionTimerValue()));
		txtCardRWAddr.setText(Util.getPreferenceInfo().getCardRWAddr());
		txtFelicaSysCode.setText(String.valueOf(Util.getPreferenceInfo().getFelicaSysCode()));
		
		lblAuthType.setEnabled(Util.getPreferenceInfo().isAllowSelectedAuthType());
		cmbAuthType.setEnabled(Util.getPreferenceInfo().isAllowSelectedAuthType());
		
		setAuthTypeState();
	}
	
	protected void setValuesFromComponent() {
		Util.getPreferenceInfo().setHost(txtName.getText());
		Util.getPreferenceInfo().setPort(Integer.parseInt(txtPort.getText()));
		Util.getPreferenceInfo().setPath(txtPath.getText());
		Util.getPreferenceInfo().setUseHttps(checkHttps.isSelected());
		Util.getPreferenceInfo().setAuthType(cmbAuthType.getSelectedIndex());
		Util.getPreferenceInfo().setSessionTimerValue(Integer.parseInt(txtSessionTimer.getText()));
		Util.getPreferenceInfo().setCardRWAddr(txtCardRWAddr.getText());
		Util.getPreferenceInfo().setFelicaSysCode(Integer.parseInt(txtFelicaSysCode.getText()));
		
		try {
			Util.getPreferenceInfo().writeXml();
			
			if (JOptionPane.showConfirmDialog(
					this,
					Resource.getString(Resource.CONFIRM_RESTART),
					Resource.getString(Resource.TITLE_MESSAGE),
					JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
				System.exit(0);
			}
		} catch (IOException e) {
			DialogManager.showMessage(this, DialogManager.ERROR_WRITE_SETTING);
		}
	}
	
	protected void setAuthTypeState() {
		boolean[]	b = {false, false};

		switch (cmbAuthType.getSelectedIndex()) {
		case PreferenceInfo.AUTH_LOGIN:
			b[0] = true;
			break;
		case PreferenceInfo.AUTH_NET_FELICA:
			b[1] = true;
			break;
		}
		
		lblSessionTimer.setEnabled(b[0]);
		txtSessionTimer.setEnabled(b[0]);
		lblSessionTimerUnit.setEnabled(b[0]);
		groupCardRW.setEnabled(b[1]);
		lblCardRWAddr.setEnabled(b[1]);
		txtCardRWAddr.setEnabled(b[1]);
		lblFelicaSysCode.setEnabled(b[1]);
		txtFelicaSysCode.setEnabled(b[1]);
	}
	
	protected boolean checkValues() {
		CheckUtil	chk;

		chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_NAME), this);
		// 儂僗僩柤偑NULL偐敾掕
		if (chk.isNull(txtName.getText())) {
			return false;
		}
		
		// 儂僗僩柤偺擖椡挿傪敾掕
		if (chk.isLengthOver(txtName.getText(), PreferenceInfo.MAX_HOST_LEN)) {
			return false;
		}
		
		// 儂僗僩柤偑惓偟偄抣偐敾掕
		if (txtName.getText().indexOf(".") >= 0) {
			// IP傾僪儗僗偺応崌
			if (chk.isValidIPAddress(txtName.getText())) {
				return false;
			}
		} else {
			// 儂僗僩柤偺応崌
			if (chk.isValidateChar(txtName.getText())) {
				return false;
			}
		}
		
		chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_PORT), this);
		// 億乕僩斣崋偑NULL偐敾掕
		if (chk.isNull(txtPort.getText())) {
			return false;
		}
		
		// 億乕僩斣崋偺忋壓尷抣傪敾掕
		if (chk.isRangeOver(Integer.parseInt(txtPort.getText()), PreferenceInfo.MIN_PORT_NUM, PreferenceInfo.MAX_PORT_NUM)) {
			return false;
		}
		
		chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_PATH), this);
		// 僷僗柤偑NULL偐敾掕
		if (chk.isNull(txtPath.getText())) {
			return false;
		}
		
		// 僷僗柤偺擖椡挿傪敾掕
		if (chk.isLengthOver(txtPath.getText(), PreferenceInfo.MAX_PATH_LEN)) {
			return false;
		}
		
		switch (cmbAuthType.getSelectedIndex()) {
		case PreferenceInfo.AUTH_LOGIN:
			chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_SESSION_TIMER), this);
			// 僙僢僔儑儞僞僀儉傾僂僩抣偑NULL偐敾掕
			if (chk.isNull(txtSessionTimer.getText())) {
				return false;
			}

			// 僙僢僔儑儞僞僀儉傾僂僩抣偺忋壓尷抣傪敾掕
			if (chk.isRangeOver(Integer.parseInt(txtSessionTimer.getText()), PreferenceInfo.MIN_SESSION_TIMER_VALUE, PreferenceInfo.MAX_SESSION_TIMER_VALUE)) {
				return false;
			}
			break;
		case PreferenceInfo.AUTH_NET_FELICA:
			chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_CARD_RW_ADDR), this);
			// 僇乕僪R/W僱僢僩儚乕僋傾僪儗僗偑NULL偐敾掕
			if (chk.isNull(txtCardRWAddr.getText())) {
				return false;
			}
			
			// 僇乕僪R/W僱僢僩儚乕僋傾僪儗僗偺擖椡挿傪敾掕
			if (chk.isLengthOver(txtCardRWAddr.getText(), PreferenceInfo.MAX_CARD_RW_ADDR_LEN)) {
				return false;
			}
			
			// 僇乕僪R/W僱僢僩儚乕僋傾僪儗僗偑惓偟偄抣偐敾掕
			if (chk.isValidIPAddress(txtCardRWAddr.getText())) {
				return false;
			}
			
			chk = new CheckUtil(Resource.getString(Resource.SERVER_SETTING_FELICA_SYS_CODE), this);
			// 僼僃儕僇僇乕僪僔僗僥儉僐乕僪偑NULL偐敾掕
			if (chk.isNull(txtFelicaSysCode.getText())) {
				return false;
			}
			
			// 僼僃儕僇僔僗僥儉僐乕僪偺忋壓尷抣傪敾掕
			if (chk.isRangeOver(Integer.parseInt(txtFelicaSysCode.getText()), PreferenceInfo.MIN_FELICA_SYS_CODE, PreferenceInfo.MAX_FELICA_SYS_CODE)) {
				return false;
			}
			break;
		}

		return true;
	}
	
	public void actionPerformed(ActionEvent ae) {
		Object	obj = ae.getSource();
		if (obj == cmbAuthType) {
			setAuthTypeState();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -