package com.vci.client.omd.statepool.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.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; 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.client.omd.statepool.StatePoolStart; import com.vci.client.ui.ImageBundle; import com.vci.client.ui.image.BundleImage; 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.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; ImageIcon imageIcon = null; if(!isTomcatPath){ iPaths = getLocalFilePath(); }else{ try { iPaths = StatePoolStart.getService().getImagePaths(); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } } rdImage = new JRadioButton[iPaths.length]; imagePanel.setLayout(new GridBagLayout()); GridBagConstraints g = new GridBagConstraints(); for(int i = 0; i < iPaths.length; i++){ if(!isTomcatPath){ if(iPaths[i].contains("-")){ imageIcon = new ImageBundle().createImageIcon(iPaths[i]); } else { imageIcon = new BundleImage().createImageIcon(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); 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); // rdImage[i].addMouseListener(new MouseAdapter() { // public void mouseClicked(MouseEvent e){ // rdImageMouseClicked(e); // } // }); //-------------------- 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 getImageURLLocal(){ return imageName; } public String getImageURL(){ // return getTomcatPath() + imageName; return imageName.substring(imageName.lastIndexOf("\\")+1); } public String getTomcatPath(){ return ""; } /** * 获取本地图片路径 * @return */ private String[] getLocalFilePath(){ ArrayList pathList = new ArrayList(); // String imagePath = CommonProperties.getStringProperty("imagePath"); // List imagePathList = new ArrayList(); //add by guo 获得本项目中的图片 String localImagePath = new ImageBundle().getPath(); if(localImagePath != null && localImagePath != ""){ localImagePath = "src" + localImagePath; localImagePath = localImagePath.substring(0,localImagePath.length()-1); File imageFolder = new File(localImagePath); File[] files = imageFolder.listFiles(); for(File file: files){ String name = file.getName(); // pathList.add(imagePath + "\\" + name); pathList.add(name); } } //add by guo获得jar包中的图片,暂时规定jar包中图片的格式为gif和png格式 String jarImagePath = new BundleImage().getPath(); URL url = ImageSelectDialog.class.getResource(jarImagePath); String path = url.getPath().substring(0, url.getPath().indexOf("!/")); File file = new File(path.replaceFirst("file:/", "")); try { JarInputStream jar = new JarInputStream(new FileInputStream(file)); JarEntry entry ; String filePath = jarImagePath.substring(1); do{ entry = jar.getNextJarEntry(); if (entry != null) { String name = entry.getName(); if(name != null && name.startsWith(filePath)) { String imageName = name.substring(filePath.length()); if(imageName.contains(".png") || imageName.contains(".gif")){ pathList.add(imageName); } } } } while (entry != null); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //System.out.println("imagePath===="+imagePath); // for(String imagePath : imagePathList){ // File imageFolder = new File(imagePath); // File[] files = imageFolder.listFiles(); // for(File file: files){ // String name = file.getName(); //// pathList.add(imagePath + "\\" + name); // pathList.add(name); // } // } return pathList.toArray(new String[0]); } /** * 判断是否是发布路径 * @return */ public boolean isTomcatPath(){ String tomcatPath = getTomcatPath(); if(tomcatPath == null || tomcatPath.equals("") || tomcatPath.equals(".")){ return false; }else{ return true; } } }