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<String> pathList = new ArrayList<String>();
|
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<String> getFileChildren(File file){
|
List<String> pathList = new ArrayList<String>();
|
if(file.isDirectory()){
|
File[] files = file.listFiles();
|
for(File file_ : files){
|
pathList.addAll(getFileChildren(file_));
|
}
|
}else{
|
pathList.add(file.getPath());
|
}
|
return pathList;
|
}
|
}
|