]> git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/GenericUploadControl.java
a1d5cff3f5185c679c753aa1b07a7b2996316d78
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui.rcp / src / main / java / org / argeo / eclipse / ui / specific / GenericUploadControl.java
1 package org.argeo.eclipse.ui.specific;
2
3 import java.io.File;
4 import java.io.IOException;
5
6 import org.apache.commons.io.FileUtils;
7 import org.argeo.ArgeoException;
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.events.ModifyListener;
10 import org.eclipse.swt.layout.GridData;
11 import org.eclipse.swt.layout.GridLayout;
12 import org.eclipse.swt.widgets.Button;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Event;
15 import org.eclipse.swt.widgets.FileDialog;
16 import org.eclipse.swt.widgets.Listener;
17 import org.eclipse.swt.widgets.Text;
18
19 /**
20 * RCP specific composite that provides a control to upload a file. WARNING: for
21 * the time being we set a GridLayout(2, false) on th eparent control.
22 */
23 public class GenericUploadControl extends Composite {
24 // private final static Log log = LogFactory
25 // .getLog(GenericUploadControl.class);
26
27 private FileDialog dialog;
28 private Text filePath;
29
30 public GenericUploadControl(Composite parent, int style, String browseLabel) {
31 super(parent, style);
32 createControl(this, browseLabel);
33
34 }
35
36 private void createControl(final Composite parent, String browseLabel) {
37 parent.setLayout(new GridLayout(2, false));
38
39 filePath = new Text(parent, SWT.BORDER | SWT.SINGLE);
40 GridData gd = new GridData(GridData.GRAB_HORIZONTAL
41 | GridData.FILL_HORIZONTAL);
42 filePath.setEditable(false);
43 filePath.setLayoutData(gd);
44
45 // Execute button
46 Button execute = new Button(parent, SWT.PUSH);
47 GridData gridData = new GridData();
48 gridData.horizontalAlignment = GridData.BEGINNING;
49 execute.setLayoutData(gridData);
50 execute.setText(browseLabel);
51
52 // Button listener
53 Listener executeListener = new Listener() {
54 public void handleEvent(Event event) {
55 dialog = new FileDialog(parent.getShell());
56 filePath.setText(dialog.open());
57 }
58 };
59 parent.layout();
60 execute.addListener(SWT.Selection, executeListener);
61 }
62
63 public boolean isControlEmpty() {
64 String path = filePath.getText();
65 if (path == null || "".equals(path.trim()))
66 return true;
67 else
68 return false;
69 }
70
71 public byte[] performUpload() {
72 String path = filePath.getText();
73 if (path != null) {
74 try {
75 File file = new File(path);
76 byte[] fileBA = FileUtils.readFileToByteArray(file);
77 return fileBA;
78 } catch (IOException e) {
79 throw new ArgeoException("Unexpected error while "
80 + "reading file at path " + path, e);
81 }
82 }
83 return null;
84 }
85
86 public void addModifyListener(ModifyListener listener) {
87 filePath.addModifyListener(listener);
88 }
89
90 /**
91 * Always returns null in an RCP environment
92 */
93 public String getLastFileUploadedName() {
94 return null;
95 }
96 }