package com.vci.client.common; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import com.vci.client.framework.util.ClientHelper; import com.vci.client.logon.base.BaseJDialog; import com.vci.client.ui.image.BundleImage; import com.vci.client.ui.swing.KJButton; import com.vci.client.ui.swing.VCISwingUtil; public class IconSelectDialog extends BaseJDialog { /** * */ private static final long serialVersionUID = -4411155196219867954L; private List allIcons = new LinkedList(); private HashMap iconIndexs = new LinkedHashMap(); private List allIconRbtns = new LinkedList(); private KJButton btnOk = new KJButton(getI18nString("btnOk"), "ok.gif"); private KJButton btnCancel = new KJButton(getI18nString("btnCancel"), "cancel.gif"); private String type; private JButton button; private JLabel lab; private String cruurentSelectedIcon = ""; private BundleImage bundleImage = new BundleImage(); public IconSelectDialog(JDialog dialog, String title, boolean isModel, String type, JButton button){ super(dialog, title, isModel); this.type = type; this.button = button; init(); } public IconSelectDialog(Frame frame, String title, boolean isModel, JLabel lab){ super(frame, title, isModel); this.type = type; this.lab = lab; init(); } public IconSelectDialog(String title, boolean isModel, String type, JButton button){ super(); this.button = button; init(); } private void init(){ this.setSize(new Dimension(500,350)); Dimension screenSize = Toolkit.getDefaultToolkit ().getScreenSize (); this.setLocation ((screenSize.width - 500) / 2, (screenSize.height - 350) / 2); initControl(); initActionListener(); if(button != null){ String btnIcon = button.getIcon().toString(); btnIcon = btnIcon.substring(btnIcon.lastIndexOf("/") + 1); if(this.iconIndexs.containsKey(btnIcon)){ cruurentSelectedIcon = btnIcon; this.allIconRbtns.get(this.iconIndexs.get(btnIcon)).setSelected(true); } } } private void initControl(){ setLayout(new BorderLayout()); JScrollPane palIcons = getIconsPanel(); add(palIcons, BorderLayout.CENTER); JPanel palBtns = new JPanel(); palBtns.add(btnOk); palBtns.add(btnCancel); add(palBtns, BorderLayout.SOUTH); } private JScrollPane getIconsPanel(){ JScrollPane scrollPanel = new JScrollPane(); scrollPanel.setBorder(BorderFactory.createLineBorder(Color.black)); scrollPanel.setBackground(Color.white); JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); // panel.setBorder(BorderFactory.createLineBorder(Color.black)); panel.setBackground(Color.white); //panel.setLayout(new FlowLayout(FlowLayout.LEFT)); loadSupportedIcons(panel); this.setBackground(Color.white); //pal.add(panel); scrollPanel.setViewportView(panel); return scrollPanel; } private void loadSupportedIcons(JPanel imgPal){ //String[] icons = getI18nString("allSupprotedIcons").split(","); String[] icons = VCISwingUtil.getImages(); ButtonGroup btnGrp = new ButtonGroup(); GridBagConstraints g = new GridBagConstraints(); int index = 0; for(String icon : icons){ ImageIcon imgIcon = bundleImage.createImageIcon(icon); if (imgIcon.getIconWidth() > 16) continue; JRadioButton rdImage = new JRadioButton(); rdImage.setBackground(Color.white); rdImage.setName(icon); rdImage.addActionListener(iconRbtnAction); btnGrp.add(rdImage); JLabel iLabel = new JLabel(imgIcon); int rem = index % 10; int mer = index / 10; g.gridx = 2 * rem; g.gridy = mer; g.anchor = GridBagConstraints.EAST; g.insets = new Insets(20, 3, 3, 3); g.gridwidth = 1; imgPal.add(rdImage, g); g.gridx = 2 * rem + 1; if(rem == 10){ g.gridwidth = 0; } imgPal.add(iLabel, g); index++; // final String name = loadPicsWithPath[i]; // rdImage.addItemListener(new ItemListener() { // @Override // public void itemStateChanged(ItemEvent e) { // // TODO Auto-generated method stub // imageName = name; // } // }); // JLabelExt lbl = new JLabelExt(bundleImage.createImageIcon(icon)); // lbl.setBackground(Color.white); // JRadioButtonExt rbtn = new JRadioButtonExt(lbl); // lbl.setRbtn(rbtn); // rbtn.setBackground(Color.white); // btnGrp.add(rbtn); // allIcons.add(icon); // allIconRbtns.add(rbtn); // iconIndexs.put(icon, index++); // rbtn.addActionListener(iconRbtnAction); // pal.add(rbtn); // pal.add(lbl); } } private String getI18nString(String spCode){ return ClientHelper.getI18nStringForFramework(this.getClass().getName() + "." + spCode, this.getLocale()); } private void initActionListener(){ btnOk.addActionListener(okAction); btnCancel.addActionListener(cancelAction); } private ActionListener iconRbtnAction = new ActionListener(){ public void actionPerformed(ActionEvent e) { iconRbtnAction(e); } }; private ActionListener okAction = new ActionListener(){ public void actionPerformed(ActionEvent e) { ok(); } }; private ActionListener cancelAction = new ActionListener(){ public void actionPerformed(ActionEvent e) { close(); } }; private void iconRbtnAction(ActionEvent e){ JRadioButton rbtn = (JRadioButton)e.getSource(); cruurentSelectedIcon = rbtn.getName(); } private void ok(){ if(!cruurentSelectedIcon.equals("")){ if(button != null){ button.setIcon(bundleImage.createImageIcon(cruurentSelectedIcon)); }else if(lab != null){ lab.setIcon(bundleImage.createImageIcon(cruurentSelectedIcon)); } close(); } } private void close(){ this.dispose(); this.setVisible(false); } public String getSelectedIcon(){ return cruurentSelectedIcon; } class JRadioButtonExt extends JRadioButton{ /** * */ private static final long serialVersionUID = 103883668562849532L; private JLabel lbl; public JLabel getLbl() { return lbl; } public void setLbl(JLabel lbl) { this.lbl = lbl; } public JRadioButtonExt(JLabel lbl) { super(); this.lbl = lbl; } } class JLabelExt extends JLabel{ /** * */ private static final long serialVersionUID = -958222271031558762L; private JRadioButtonExt rbtn; public JRadioButtonExt getRbtn() { return rbtn; } public void setRbtn(JRadioButtonExt rbtn) { this.rbtn = rbtn; } public JLabelExt(ImageIcon icon) { super(icon); } } }