blob: 716a07341ed64ca213236263f41c1c68d31844cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
package com.c2kernel.gui.tabs.outcome.form.field;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.lang.reflect.Array;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import org.apache.xerces.impl.dv.util.Base64;
import com.c2kernel.utils.Logger;
public class ImageEditField extends StringEditField {
JLabel imageLabel;
Box imagePanel;
JButton browseButton;
String encodedImage;
static JFileChooser chooser = new JFileChooser();
static {
chooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public String getDescription() {
return "Image Files";
}
@Override
public boolean accept(File f) {
return (f.isDirectory() || (f.isFile() && (f.getName()
.endsWith(".gif")
|| f.getName().endsWith(".jpg")
|| f.getName().endsWith(".jpeg")
|| f.getName().endsWith(".png"))));
}
});
}
public ImageEditField() {
super();
imageLabel = new JLabel();
imagePanel = Box.createVerticalBox();
browseButton = new JButton("Browse");
browseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
try {
FileInputStream fis = new FileInputStream(file);
byte[] bArray = (byte[]) Array.newInstance(byte.class,
(int) file.length());
fis.read(bArray, 0, (int) file.length());
fis.close();
ImageIcon newImage = new ImageIcon(Toolkit
.getDefaultToolkit().createImage(bArray));
imageLabel.setIcon(newImage);
encodedImage = Base64.encode(bArray);
} catch (Exception ex) {
Logger.exceptionDialog(ex);
}
}
}
});
imagePanel.add(imageLabel);
imagePanel.add(Box.createVerticalStrut(5));
imagePanel.add(browseButton);
}
@Override
public String getDefaultValue() {
return "";
}
@Override
public Component getControl() {
return imagePanel;
}
@Override
public String getText() {
return encodedImage == null ? "" : encodedImage;
}
@Override
public void setText(String text) {
encodedImage = text;
if (text != null && text.length() > 0) {
byte[] decodedImage = Base64.decode(encodedImage);
imageLabel.setIcon(new ImageIcon(Toolkit.getDefaultToolkit()
.createImage(decodedImage)));
}
}
@Override
public void setEditable(boolean editable) {
browseButton.setVisible(false);
}
}
|