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

📄 groupinfopanel.java

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

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

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

import jp.co.ntl.ext.CheckUtil;
import jp.co.ntl.group.GroupInfo;
import jp.co.ntl.limitprint.LimitPrintInfo;
import jp.co.ntl.preference.PreferenceInfo;
import jp.co.ntl.swing.NumberField;
import jp.co.ntl.swing.SpringUtilities;
import jp.co.ntl.swing.ext.AbstractDetailInfoPanel;

public class GroupInfoPanel extends AbstractDetailInfoPanel implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private static final int		IDX_LIMIT_NONE		= 0;
	private static final int		IDX_LIMIT_STOP		= 1;
	private static final int		IDX_LIMIT_NUM		= 2;
	
	private JLabel				lblGroupName;
	private JTextField			txtGroupName;
	private JLabel				lblLimit;
	private JComboBox			cmbLimit;
	private NumberField		numLimit;
	private JComboBox			cmbLimitUnit;
	
	private GroupInfo			groupInfo;
	private Vector				vcGroupInfo;
	private Vector				vcLpInfo;
	
	public GroupInfoPanel(boolean modify, GroupInfo groupInfo, Vector vcGroupInfo, Vector vcLpInfo) {
		super(modify, new Object[] {groupInfo, vcGroupInfo, vcLpInfo});
	}
	
	protected void setParams(Object[] params) {
		this.groupInfo = (GroupInfo)params[0];
		this.vcGroupInfo = (Vector)params[1];
		this.vcLpInfo = (Vector)params[2];
	}
	
	protected void buildComponents() {
		setLayout(new SpringLayout());
		
		Dimension	size = new Dimension(250, 24);
		Dimension	sizeNumberField = new Dimension(120, 24);
		
		lblGroupName = new JLabel(Resource.getString(Resource.GROUPINFO_GROUPNAME));
		add(lblGroupName);
		
		txtGroupName = new JTextField();
		txtGroupName.setPreferredSize(size);
		add(txtGroupName);

		lblLimit = new JLabel(Resource.getString(Resource.GROUPINFO_LIMIT));
		add(lblLimit);

		JPanel	panelLimit = new JPanel(new SpringLayout());
		
		String[]	txt = {
			Resource.getString(Resource.GROUPINFO_LIMIT_NONE),
			Resource.getString(Resource.GROUPINFO_LIMIT_STOP),
			Resource.getString(Resource.GROUPINFO_LIMIT_NUM)
		};
		cmbLimit = new JComboBox(txt);
		panelLimit.add(cmbLimit);

		JPanel	panelLimitText = new JPanel();
		panelLimitText.setLayout(new BoxLayout(panelLimitText, BoxLayout.X_AXIS));
		panelLimitText.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
		
		numLimit = new NumberField(5, NumberField.UINT);
		numLimit.setPreferredSize(sizeNumberField);
		panelLimitText.add(numLimit);
		
		panelLimit.add(panelLimitText);
		
		cmbLimitUnit = new JComboBox();
		panelLimit.add(cmbLimitUnit);
		
		SpringUtilities.makeCompactGrid(panelLimit, 1, panelLimit.getComponentCount(), 0, 0, 10, 0);
		add(panelLimit);		
		
		SpringUtilities.makeCompactGrid(this, getComponentCount() / 2, 2, 10, 10, 10, 10);
		
		cmbLimit.addActionListener(this);
	}
	
	private void setLimitState() {
		int		idx = cmbLimit.getSelectedIndex();

		if (idx == IDX_LIMIT_NUM) {
			numLimit.setEnabled(true);
			cmbLimitUnit.setEnabled(true);
		} else {
			numLimit.setEnabled(false);
			cmbLimitUnit.setEnabled(false);
		}
	}
	
	protected void setValuesToComponent() {
		preValue = groupInfo.getName();
		txtGroupName.setText(groupInfo.getName());
		
		for (int i = 0; i < vcLpInfo.size(); i++) {
			LimitPrintInfo	lpInfo = (LimitPrintInfo)vcLpInfo.elementAt(i);
			switch (lpInfo.getLimitPeriod()) {
			case LimitPrintInfo.PERIOD_MONTH:
				cmbLimitUnit.addItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_MONTH));
				break;
			case LimitPrintInfo.PERIOD_WEEK:
				cmbLimitUnit.addItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_WEEK));
				break;
			case LimitPrintInfo.PERIOD_DAY:
				cmbLimitUnit.addItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_DAY));
				break;
			}
		}
		
		if (groupInfo.getNumLimit() == GroupInfo.NUM_LIMIT_NO_LIMIT) {
			cmbLimit.setSelectedIndex(IDX_LIMIT_NONE);
			numLimit.setValue(0);
			cmbLimitUnit.setSelectedIndex(0);
		} else if (groupInfo.getNumLimit() == GroupInfo.NUM_LIMIT_STOP) {
			cmbLimit.setSelectedIndex(IDX_LIMIT_STOP);
			numLimit.setValue(0);
			cmbLimitUnit.setSelectedIndex(0);
		} else {
			cmbLimit.setSelectedIndex(IDX_LIMIT_NUM);
			numLimit.setValue(groupInfo.getNumLimit());
			switch (groupInfo.getLimitPrintInfo().getLimitPeriod()) {
			case LimitPrintInfo.PERIOD_MONTH:
				cmbLimitUnit.setSelectedItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_MONTH));
				break;
			case LimitPrintInfo.PERIOD_WEEK:
				cmbLimitUnit.setSelectedItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_WEEK));
				break;
			case LimitPrintInfo.PERIOD_DAY:
				cmbLimitUnit.setSelectedItem(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_DAY));
				break;
			default:
				cmbLimitUnit.setSelectedIndex(0);
				break;
			}
		}
		
		setLimitState();
	}
	
	protected void setValuesFromComponent() {
		groupInfo.setName(txtGroupName.getText());
		switch (cmbLimit.getSelectedIndex()) {
		case IDX_LIMIT_NONE:
			groupInfo.setNumLimit(GroupInfo.NUM_LIMIT_NO_LIMIT);
			break;
		case IDX_LIMIT_STOP:
			groupInfo.setNumLimit(GroupInfo.NUM_LIMIT_STOP);
			break;
		default:
			groupInfo.setNumLimit(numLimit.getIntValue());
			int	period = LimitPrintInfo.PERIOD_ID_IGNORE;
			String	selItem = (String)cmbLimitUnit.getSelectedItem();
			if (selItem.equals(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_MONTH))) {
				period = LimitPrintInfo.PERIOD_MONTH;
			} else if (selItem.equals(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_WEEK))) {
				period = LimitPrintInfo.PERIOD_WEEK;
			} else if (selItem.equals(Resource.getString(Resource.GROUPINFO_LIMIT_UNIT_DAY))) {
				period = LimitPrintInfo.PERIOD_DAY;
			}
			
			for (int i = 0; i < vcLpInfo.size(); i++) {
				LimitPrintInfo	lpInfo = (LimitPrintInfo)vcLpInfo.elementAt(i);
				if (lpInfo.getLimitPeriod() == period) {
					groupInfo.setLimitPrintInfo(lpInfo);
					break;
				}
			}
			break;
		}
	}
	
	protected boolean checkValues() {
		CheckUtil	chk;
		String		groupName = txtGroupName.getText();
		
		chk = new CheckUtil(Resource.getString(Resource.GROUPINFO_GROUPNAME), this);
			
		// 僌儖乕僾柤偑枹擖椡偺偲偒
		if (chk.isNull(groupName)) {
			return false;
		}

		// 僌儖乕僾柤偺挿偝僠僃僢僋
		if (chk.isLengthOver(groupName, GroupInfo.MAX_GROUP_NAME_LEN)) {
			return false;
		}
		
		// 僌儖乕僾柤偵巊梡偱偒側偄暥帤偑擖椡偝傟偰偄傞偲偒
		if (chk.isValidateChar(groupName)) {
			return false;
		}
			
		// 僌儖乕僾柤偑偡偱偵擖椡嵪傒偺偲偒
		if (!modify || (modify && !preValue.equals(groupName))) {
			for (int i = 0; i < vcGroupInfo.size(); i++) {
				GroupInfo	g = (GroupInfo)vcGroupInfo.elementAt(i);
				if (chk.isAlreadyRegitered(groupName, g.getName())) {
					return false;
				}
			}
		}
		
		if (cmbLimit.getSelectedIndex() == IDX_LIMIT_NUM) {
			chk = new CheckUtil(Resource.getString(Resource.GROUPINFO_LIMIT), this);
			
			// 惂尷枃悢偑枹擖椡偺偲偒
			String	limit = numLimit.getText();
			if (chk.isNull(limit)) {
				return false;
			}
			
			// 惂尷枃悢傪敾掕
			int	limitVal = numLimit.getIntValue();
			if (chk.isRangeOver(limitVal, GroupInfo.MIN_LIMIT, GroupInfo.MAX_LIMIT)) {
				return false;
			}
		}
		return true;
	}
	
	public JButton[] getButtons() {
		if (clientKind == PreferenceInfo.CLIENT_MAC) {
			return new JButton[] {
					new JButton(Resource.getString(Resource.GROUPINFO_CANCEL)),
					new JButton(Resource.getString(Resource.GROUPINFO_OK))
			};
		} else {
			return new JButton[] {
					new JButton(Resource.getString(Resource.GROUPINFO_OK)),
					new JButton(Resource.getString(Resource.GROUPINFO_CANCEL))
			};
		}
	}	
	
	public void actionPerformed(ActionEvent ae) {
		Object	obj = ae.getSource();
		if (obj == cmbLimit) {
			setLimitState();
		}
	}
}

⌨️ 快捷键说明

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