only auto preview well known content type.
This commit is contained in:
parent
e73bb005d9
commit
1c3e73c240
|
@ -19,10 +19,14 @@ package org.adempiere.webui.panel;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.webui.apps.AEnv;
|
import org.adempiere.webui.apps.AEnv;
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.component.Label;
|
||||||
import org.adempiere.webui.component.ListItem;
|
import org.adempiere.webui.component.ListItem;
|
||||||
import org.adempiere.webui.component.Listbox;
|
import org.adempiere.webui.component.Listbox;
|
||||||
import org.adempiere.webui.component.Panel;
|
import org.adempiere.webui.component.Panel;
|
||||||
|
@ -36,7 +40,7 @@ import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.zkoss.util.media.AMedia;
|
import org.zkoss.util.media.AMedia;
|
||||||
import org.zkoss.util.media.Media;
|
import org.zkoss.util.media.Media;
|
||||||
import org.zkoss.zk.au.AuScript;
|
import org.zkoss.zk.au.out.AuScript;
|
||||||
import org.zkoss.zk.au.out.AuEcho;
|
import org.zkoss.zk.au.out.AuEcho;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.EventListener;
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
|
@ -51,18 +55,16 @@ import org.zkoss.zul.Filedownload;
|
||||||
import org.zkoss.zul.Fileupload;
|
import org.zkoss.zul.Fileupload;
|
||||||
import org.zkoss.zul.Hbox;
|
import org.zkoss.zul.Hbox;
|
||||||
import org.zkoss.zul.Iframe;
|
import org.zkoss.zul.Iframe;
|
||||||
import org.zkoss.zul.Timer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Low Heng Sin
|
* @author Low Heng Sin
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class WAttachment extends Window implements EventListener
|
public class WAttachment extends Window implements EventListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
* generated serial version Id
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 2923895336573554570L;
|
private static final long serialVersionUID = 2923895336573554570L;
|
||||||
|
|
||||||
|
@ -81,6 +83,8 @@ public class WAttachment extends Window implements EventListener
|
||||||
|
|
||||||
private Textbox text = new Textbox();
|
private Textbox text = new Textbox();
|
||||||
|
|
||||||
|
private Label sizeLabel = new Label();
|
||||||
|
|
||||||
private Listbox cbContent = new Listbox();
|
private Listbox cbContent = new Listbox();
|
||||||
|
|
||||||
private Button bDelete = new Button();
|
private Button bDelete = new Button();
|
||||||
|
@ -101,6 +105,17 @@ public class WAttachment extends Window implements EventListener
|
||||||
|
|
||||||
private int displayIndex;
|
private int displayIndex;
|
||||||
|
|
||||||
|
private static List<String> autoPreviewList;
|
||||||
|
|
||||||
|
static {
|
||||||
|
autoPreviewList = new ArrayList<String>();
|
||||||
|
autoPreviewList.add("image/jpeg");
|
||||||
|
autoPreviewList.add("image/png");
|
||||||
|
autoPreviewList.add("image/gif");
|
||||||
|
autoPreviewList.add("text/plan");
|
||||||
|
autoPreviewList.add("application/pdf");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
* loads Attachment, if ID <> 0
|
* loads Attachment, if ID <> 0
|
||||||
|
@ -142,10 +157,12 @@ public class WAttachment extends Window implements EventListener
|
||||||
{
|
{
|
||||||
setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
|
setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED);
|
||||||
AEnv.showWindow(this);
|
AEnv.showWindow(this);
|
||||||
displayData(0, true);
|
if (autoPreview(0, true))
|
||||||
|
{
|
||||||
String script = "setTimeout(\"$e('"+ preview.getUuid() + "').src = $e('" +
|
String script = "setTimeout(\"$e('"+ preview.getUuid() + "').src = $e('" +
|
||||||
preview.getUuid() + "').src\", 1000)";
|
preview.getUuid() + "').src\", 1000)";
|
||||||
Clients.response(new AuScript(null, script));
|
Clients.response(new AuScript(null, script));
|
||||||
|
}
|
||||||
|
|
||||||
//enter modal
|
//enter modal
|
||||||
doModal();
|
doModal();
|
||||||
|
@ -195,6 +212,7 @@ public class WAttachment extends Window implements EventListener
|
||||||
toolBar.appendChild(bDelete);
|
toolBar.appendChild(bDelete);
|
||||||
toolBar.appendChild(bSave);
|
toolBar.appendChild(bSave);
|
||||||
toolBar.appendChild(cbContent);
|
toolBar.appendChild(cbContent);
|
||||||
|
toolBar.appendChild(sizeLabel);
|
||||||
|
|
||||||
mainPanel.appendChild(northPanel);
|
mainPanel.appendChild(northPanel);
|
||||||
Div div = new Div();
|
Div div = new Div();
|
||||||
|
@ -248,6 +266,8 @@ public class WAttachment extends Window implements EventListener
|
||||||
confirmPanel.appendChild(bRefresh);
|
confirmPanel.appendChild(bRefresh);
|
||||||
confirmPanel.appendChild(bCancel);
|
confirmPanel.appendChild(bCancel);
|
||||||
confirmPanel.appendChild(bOk);
|
confirmPanel.appendChild(bOk);
|
||||||
|
|
||||||
|
text.setTooltiptext(Msg.getElement(Env.getCtx(), "TextMsg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -291,6 +311,32 @@ public class WAttachment extends Window implements EventListener
|
||||||
|
|
||||||
} // loadAttachment
|
} // loadAttachment
|
||||||
|
|
||||||
|
private boolean autoPreview(int index, boolean immediate)
|
||||||
|
{
|
||||||
|
MAttachmentEntry entry = m_attachment.getEntry(index);
|
||||||
|
String mimeType = entry.getContentType();
|
||||||
|
byte[] data = entry.getData();
|
||||||
|
String unit = " KB";
|
||||||
|
BigDecimal size = new BigDecimal(data != null ? data.length : 0);
|
||||||
|
size = size.divide(new BigDecimal("1024"));
|
||||||
|
if (size.compareTo(new BigDecimal("1024")) >= 0)
|
||||||
|
{
|
||||||
|
size = size.divide(new BigDecimal("1024"));
|
||||||
|
unit = " MB";
|
||||||
|
}
|
||||||
|
size = size.setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
sizeLabel.setText(size.toPlainString() + unit);
|
||||||
|
if (autoPreviewList.contains(mimeType))
|
||||||
|
{
|
||||||
|
displayData(index, immediate);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display gif or jpg in gifPanel
|
* Display gif or jpg in gifPanel
|
||||||
* @param index index
|
* @param index index
|
||||||
|
@ -312,6 +358,12 @@ public class WAttachment extends Window implements EventListener
|
||||||
Clients.response(new AuEcho(this, "displaySelected", null));
|
Clients.response(new AuEcho(this, "displaySelected", null));
|
||||||
} // displayData
|
} // displayData
|
||||||
|
|
||||||
|
private void clearPreview()
|
||||||
|
{
|
||||||
|
preview.setSrc(null);
|
||||||
|
preview.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use to refresh preview frame, don't call directly.
|
* Use to refresh preview frame, don't call directly.
|
||||||
*/
|
*/
|
||||||
|
@ -327,7 +379,8 @@ public class WAttachment extends Window implements EventListener
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AMedia media = new AMedia(entry.getName(), null, entry.getContentType(), entry.getData());
|
String contentType = entry.getContentType();
|
||||||
|
AMedia media = new AMedia(entry.getName(), null, contentType, entry.getData());
|
||||||
|
|
||||||
preview.setContent(media);
|
preview.setContent(media);
|
||||||
preview.setVisible(true);
|
preview.setVisible(true);
|
||||||
|
@ -421,7 +474,10 @@ public class WAttachment extends Window implements EventListener
|
||||||
// Show Data
|
// Show Data
|
||||||
|
|
||||||
else if (e.getTarget() == cbContent)
|
else if (e.getTarget() == cbContent)
|
||||||
displayData (cbContent.getSelectedIndex(), false);
|
{
|
||||||
|
clearPreview();
|
||||||
|
autoPreview (cbContent.getSelectedIndex(), false);
|
||||||
|
}
|
||||||
|
|
||||||
// Load Attachment
|
// Load Attachment
|
||||||
|
|
||||||
|
@ -434,9 +490,7 @@ public class WAttachment extends Window implements EventListener
|
||||||
saveAttachmentToFile();
|
saveAttachmentToFile();
|
||||||
|
|
||||||
else if (e.getTarget() == bRefresh)
|
else if (e.getTarget() == bRefresh)
|
||||||
displayData(displayIndex, true);
|
displayData(cbContent.getSelectedIndex(), true);
|
||||||
else if (e.getTarget() instanceof Timer)
|
|
||||||
displayData(displayIndex, true);
|
|
||||||
|
|
||||||
} // onEvent
|
} // onEvent
|
||||||
|
|
||||||
|
@ -484,7 +538,8 @@ public class WAttachment extends Window implements EventListener
|
||||||
{
|
{
|
||||||
m_attachment.updateEntry(i, getMediaData(media));
|
m_attachment.updateEntry(i, getMediaData(media));
|
||||||
cbContent.setSelectedIndex(i);
|
cbContent.setSelectedIndex(i);
|
||||||
displayData(cbContent.getSelectedIndex(), false);
|
clearPreview();
|
||||||
|
autoPreview(cbContent.getSelectedIndex(), false);
|
||||||
m_change = true;
|
m_change = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -495,7 +550,8 @@ public class WAttachment extends Window implements EventListener
|
||||||
{
|
{
|
||||||
cbContent.appendItem(media.getName(), media.getName());
|
cbContent.appendItem(media.getName(), media.getName());
|
||||||
cbContent.setSelectedIndex(cbContent.getItemCount()-1);
|
cbContent.setSelectedIndex(cbContent.getItemCount()-1);
|
||||||
displayData(cbContent.getSelectedIndex(), false);
|
autoPreview(cbContent.getSelectedIndex(), false);
|
||||||
|
clearPreview();
|
||||||
m_change = true;
|
m_change = true;
|
||||||
}
|
}
|
||||||
} // getFileName
|
} // getFileName
|
||||||
|
|
Loading…
Reference in New Issue