📄 groupinfopanel.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 + -