package com.vci.client.omd.btm.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; 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.awt.event.MouseEvent; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import com.vci.client.LogonApplication; import com.vci.common.resource.CommonProperties; import com.vci.corba.common.VCIError; public class ImageSelectDialog extends JDialog{ /** * */ private static final long serialVersionUID = -2527985037546524122L; private static ImageSelectDialog imageSelectDialog = null; private JPanel southPanel, imagePanel; private JButton btnOK, btnCancel; private JScrollPane scrollPanel; private JRadioButton rdImage[]; private String imageName = ""; private ButtonGroup rdGroup = new ButtonGroup(); private ImageSelectDialog(){ initUI(); initImageIcon(); addListener(); } public static ImageSelectDialog getInstance(){ if(imageSelectDialog == null){ imageSelectDialog = new ImageSelectDialog(); } return imageSelectDialog; } private void initUI(){ this.setTitle("图标选择框"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(screenSize.width/2, screenSize.height/2); this.setModal(true); this.setLocationRelativeTo(null); this.setResizable(false); this.setLayout(new BorderLayout(5, 5)); //图标 scrollPanel = new JScrollPane(); scrollPanel.setAutoscrolls(false); //确定, 取消按钮 southPanel = new JPanel(); this.add(scrollPanel, BorderLayout.CENTER); this.add(southPanel, BorderLayout.SOUTH); imagePanel = new JPanel(); scrollPanel.setViewportView(imagePanel); btnOK = new JButton("确定"); btnCancel = new JButton("取消"); southPanel.add(btnOK); southPanel.add(btnCancel); } private void initImageIcon(){ boolean isTomcatPath = isTomcatPath(); String[] iPaths = null; if(!isTomcatPath){ iPaths = getLocalFilePath(); }else{ try { iPaths = BtmClient.getService().getImagePaths(); } catch (VCIError e) { e.printStackTrace(); } } rdImage = new JRadioButton[iPaths.length]; imagePanel.setLayout(new GridBagLayout()); GridBagConstraints g = new GridBagConstraints(); for(int i = 0; i < iPaths.length; i++){ ImageIcon imageIcon = null; if(!isTomcatPath){ imageIcon = new ImageIcon(iPaths[i]); }else{ URL url = null; try { url = new URL(getTomcatPath() + iPaths[i]); } catch (MalformedURLException e) { e.printStackTrace(); } if(url == null){ continue; } imageIcon = new ImageIcon(url); } rdImage[i] = new JRadioButton(); rdImage[i].setName(iPaths[i]); rdGroup.add(rdImage[i]); JLabel iLabel = new JLabel(imageIcon); // iLabel.setPreferredSize(new Dimension(50, 50)); int rem = i%5; int mer = i/5; g.gridx = 2 * rem; g.gridy = mer; g.anchor = GridBagConstraints.EAST; g.gridwidth = 1; imagePanel.add(rdImage[i], g); g.gridx = 2 * rem + 1; if(rem == 4){ g.gridwidth = 0; } imagePanel.add(iLabel, g); //-------------------- final String name = iPaths[i]; rdImage[i].addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub imageName = name; } }); //-------------------- } } private void rdImageMouseClicked(MouseEvent e){ JRadioButton selectRd = (JRadioButton) e.getComponent(); if(selectRd.getName().equals(imageName)){ return; } imageName = selectRd.getName(); } private void addListener(){ btnOK.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(imageName.equals("")){ JOptionPane.showMessageDialog(null, "请选择业务类型图标", "选择图标", JOptionPane.WARNING_MESSAGE); return; } dispose(); } }); btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); } public String getImageURL(){ if(!isTomcatPath()){ return imageName.substring(imageName.lastIndexOf("\\")+1); }else{ return getTomcatPath() + imageName; } } /** * 获取Tomcat发布的地址 * @return */ public String getTomcatPath(){ return LogonApplication.urlBasePath; } /** * 判断是否是发布路径 * @return */ public boolean isTomcatPath(){ String tomcatPath = getTomcatPath(); if(tomcatPath == null || tomcatPath.equals("") || tomcatPath.equals(".")){ return false; }else{ return true; } } /** * 获取本地图片路径 * @return */ private String[] getLocalFilePath(){ String imagePath = CommonProperties.getStringProperty("imagePath"); File imageFolder = new File(imagePath); File[] files = imageFolder.listFiles(); ArrayList pathList = new ArrayList(); for(File file: files){ if(file.isDirectory()){ pathList.addAll(getFileChildren(file)); }else{ pathList.add(file.getPath()); } } return pathList.toArray(new String[0]); } /** * 获取文件夹下的所有子文件路径 * @param file * @return */ public List getFileChildren(File file){ List pathList = new ArrayList(); if(file.isDirectory()){ File[] files = file.listFiles(); for(File file_ : files){ pathList.addAll(getFileChildren(file_)); } }else{ pathList.add(file.getPath()); } return pathList; } }