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<String> pathList = new ArrayList<String>();
|
// String imagePath = CommonProperties.getStringProperty("imagePath");
|
// List<String> imagePathList = new ArrayList<String>();
|
//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;
|
}
|
}
|
}
|