break;
}
s.write(k);
}
return isShort ? new ShortBlob(s.toByteArray())
: new Blob(s.toByteArray());
} catch (IOException e) {
Activator.log(e);
return null;
}
}
return null;
}
public String getName() {
return "Set from file";
}
public String getDescription() {
return "";
}
});
OneLineTextElement<Object> m = new OneLineTextElement<Object>(binding) {
private org.eclipse.swt.widgets.Text txt;
private Composite newComposite;
private GridLayout layout;
private boolean packFlg = false;
private AbstractBlobVisualizer[] viewers = new AbstractBlobVisualizer[] {
new ImageBlobVisualizer(),
new SerializableBlobVisualizer(new IUpdateBlob() {
public void updateBlob(byte[] data) {
Blob blob = new Blob(data);
onValue(blob);
}
}, project) };
private AbstractBlobVisualizer last;
protected void onValue(Object value) {
commitToBinding(value);
initBlobViewer(value);
}
public void initBlobViewer(Object value) {
if (value != null) {
if (value instanceof Blob) {
Blob blob = (Blob) value;
if (last == null || !last.isSupported(blob)) {
boolean flg = false;
for (AbstractBlobVisualizer handler : viewers) {
if (last != null) {
last.dispose();
last = null;
}
if (handler.isSupported(blob)) {
last = handler;
last.init(newComposite);
last.handleBlob(blob);
// if (packFlg ) {
// newComposite.getShell().pack(true);
// } else {
// packFlg = true;
// }
Display.getCurrent().asyncExec(
new Runnable() {
public void run() {
newComposite.getShell()
.pack(true);
newComposite.getShell()
.layout(true, true);
}
});
// newComposite.getShell().layout(true,
// true);
flg = true;
break;
}
}
if (!flg) {
// if (packFlg) {
// newComposite.getShell().pack(true);
// } else {
// packFlg = true;
// }
// newComposite.getShell().layout(true, true);
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
newComposite.getShell().pack(true);
newComposite.getShell().layout(true,
true);
}
});
}
} else {
last.handleBlob(blob);
// newComposite.getShell().pack(true);
// newComposite.getShell().layout(true, true);
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
newComposite.getShell().pack(true);
newComposite.getShell().layout(true, true);
}
});
}
}
}
}
protected void doCommit(final IBinding binding2) {
// commitToBinding(this.getgetValue());
}
protected org.eclipse.swt.widgets.Text internalCreateControl(
Composite conComposite) {
newComposite = new Composite(conComposite, SWT.INHERIT_FORCE);
layout = new GridLayout(1, false);
layout.horizontalSpacing = 0;
layout.verticalSpacing = 2;
layout.marginWidth = 0;
layout.marginHeight = 0;
newComposite.setLayout(layout);
txt = super.internalCreateControl(newComposite);
Object value = binding.getValue();
if (value instanceof Blob) {
initBlobViewer(value);
}
// txt.setVisible(false);
return txt;
}
protected void installSelector(Composite conComposite) {
super.installSelector(conComposite);
Button button = new Button(conComposite, SWT.NONE);
button.setText("Store to File");
this.registerPart(button);
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
FileDialog dlg = new FileDialog(Display.getCurrent()
.getActiveShell(), SWT.SAVE);
dlg.setText("Export blob to file:");
String open = dlg.open();
if (open != null) {
try {
FileOutputStream fs = new FileOutputStream(open);
try {
Object value = binding.getValue();
if (value instanceof Blob) {
Blob b = (Blob) value;
fs.write(b.getBytes());
}
if (value instanceof ShortBlob) {
ShortBlob b = (ShortBlob) value;
fs.write(b.getBytes());
}
} finally {
fs.close();
}