Requirement Constraints

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Friday, 23 August 2013

ZK Dropupload example

Posted on 04:21 by Unknown
This is another example for ZK Drag and Drop files in the zul. Apart from the official example, i have shown how to add muliple files and store in the DB and also, if browser does not support HTML 5, then user can still use button to upload their files.

image

ChosenboxViewModel.java

package demo.combobox.chosenbox;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.zkoss.bind.BindContext;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.io.Files;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.UploadEvent;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;

import demo.data.EmailLabels;

public class ChosenboxViewModel {

private ListModelList<String> contactsModel = new ListModelList<String>();
private ListModel<String> labelsModel = new ListModelList<String>(
EmailLabels.getLabels());
private List<String> filesList = new ArrayList<String>();



public List<String> getFilesList() {
return filesList;
}

public void setFilesList(List<String> filesList) {
this.filesList = filesList;
}

@Init
public void init() {

}

@Command("newContact")
public void newContact(@BindingParam("contact") String contact) {
contactsModel.add(contact);
contactsModel.addToSelection(contact);
}

public ListModel<String> getContactsModel() {
return contactsModel;
}

public ListModel<String> getLabelsModel() {
return labelsModel;
}

@Command
@NotifyChange("filesList")
public void doUpload(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) throws IOException {

UploadEvent upEvent = null;
Object objUploadEvent = ctx.getTriggerEvent();
if (objUploadEvent != null && (objUploadEvent instanceof UploadEvent)) {
upEvent = (UploadEvent) objUploadEvent;
}
if (upEvent != null) {
org.zkoss.util.media.Media[] medias = upEvent.getMedias();
String pathToStore = getDestinationFolder();
for (org.zkoss.util.media.Media m : medias) {
filesList.add(m.getName());
Files.copy(new File(pathToStore + m.getName()),
m.getStreamData());
}

}
}

private String getDestinationFolder() {

String returnPath = null;
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH); // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
returnPath = Executions.getCurrent().getDesktop().getWebApp()
.getRealPath("/");
String yearPath = "\\" + "myFiles" + "\\" + year + "\\" + month + "\\"
+ day + "\\";
returnPath = returnPath + yearPath;
File baseDir = new File(returnPath);
if (!baseDir.exists()) {
baseDir.mkdirs();
}
return returnPath;
}

@Command
@NotifyChange("filesList")
public void onDelete(@BindingParam("currentFile") String curFile)
{
filesList.remove(curFile);
}
}


EmailContacts.java


package demo.data;

import java.util.Arrays;
import java.util.Collection;

public class EmailContacts {

public static Collection<? extends String> getContacts() {
return Arrays.asList("Adam (adam@company.org)",
"Chris (chris@company.org)", "Daniel (daniel@company.org)",
"Eve(eve@company.org)", "Fritz (fritz@company.org)",
"Mary (mary@company.org)", "Max (max@company.org)",
"John (john@company.org)", "Peter (peter@company.org)");
}

}

EmailLabels.java


package demo.data;

import java.util.Arrays;
import java.util.Collection;

public class EmailLabels {

public static Collection<? extends String> getLabels() {
return Arrays.asList("accounts", "friends", "information", "personal",
"products", "projects", "support", "work");
}

}



chosenbox.zul


<zk>
<style src="/widgets/combobox/chosenbox/style.css" />
<vlayout hflex="1" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('demo.combobox.chosenbox.ChosenboxViewModel')">
<image sclass="maillogo"
src="/widgets/combobox/chosenbox/img/logo_zkmail.png" />
<vlayout sclass="mail" hflex="1">
<hbox sclass="mailformrow" hflex="1" align="center">
<label sclass="maillabel" value="Label">To</label>
<chosenbox sclass="mailinput" hflex="1"
model="@load(vm.contactsModel)"
emptyMessage="type or select contacts (existing or new ones)"
creatable="true" createMessage="Create new contact '{0}'"
onSearch="@command('newContact', contact=event.value)"
open="false" />
</hbox>
<hbox sclass="mailformrow" hflex="1" align="center">
<label sclass="maillabel" value="Label"></label>
<chosenbox sclass="mailinput" hflex="1"
model="@load(vm.labelsModel)"
emptyMessage="choose one or more labels" />
</hbox>
<textbox id="hereplease" sclass="mailinput" multiline="true"
hflex="1" height="100px">
</textbox>
</vlayout>
<window title="Attachment(s) You can drage and Drop here"
id="attachwin" border="normal" height="1 80%" width="50%">
<vlayout>
<hlayout>
<dropupload maxsize="5120" detection="self"
width="570px" height="30px"
onUpload="@command('doUpload',upEvent=event)"
content="Drop the files here">
</dropupload>
<button upload="true,maxsize=5120"
onUpload="@command('doUpload',upEvent=event)" label="Add Files">
</button>

</hlayout>
<listbox height="200px" id=""
model="@load(vm.filesList)">
<listhead sizable="true">
<listheader label="FileName" />
<listheader label="Delete" />
</listhead>
<template name="model">
<listitem>
<listcell label="@bind(each)" />
<listcell>
<button image="DeleteRecord.png"
onClick="@command('onDelete', currentFile=each)" />
</listcell>
</listitem>
</template>
</listbox>
</vlayout>
</window>
</vlayout>


</zk>





ChosenboxViewModel.java


package demo.combobox.chosenbox;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.zkoss.bind.BindContext;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.io.Files;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.UploadEvent;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;

import demo.data.EmailLabels;

public class ChosenboxViewModel {

private ListModelList<String> contactsModel = new ListModelList<String>();
private ListModel<String> labelsModel = new ListModelList<String>(
EmailLabels.getLabels());
private List<String> filesList = new ArrayList<String>();



public List<String> getFilesList() {
return filesList;
}

public void setFilesList(List<String> filesList) {
this.filesList = filesList;
}

@Init
public void init() {

}

@Command("newContact")
public void newContact(@BindingParam("contact") String contact) {
contactsModel.add(contact);
contactsModel.addToSelection(contact);
}

public ListModel<String> getContactsModel() {
return contactsModel;
}

public ListModel<String> getLabelsModel() {
return labelsModel;
}

@Command
@NotifyChange("filesList")
public void doUpload(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) throws IOException {

UploadEvent upEvent = null;
Object objUploadEvent = ctx.getTriggerEvent();
if (objUploadEvent != null && (objUploadEvent instanceof UploadEvent)) {
upEvent = (UploadEvent) objUploadEvent;
}
if (upEvent != null) {
org.zkoss.util.media.Media[] medias = upEvent.getMedias();
String pathToStore = getDestinationFolder();
for (org.zkoss.util.media.Media m : medias) {
filesList.add(m.getName());
Files.copy(new File(pathToStore + m.getName()),
m.getStreamData());
}

}
}

private String getDestinationFolder() {

String returnPath = null;
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH); // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
returnPath = Executions.getCurrent().getDesktop().getWebApp()
.getRealPath("/");
String yearPath = "\\" + "myFiles" + "\\" + year + "\\" + month + "\\"
+ day + "\\";
returnPath = returnPath + yearPath;
File baseDir = new File(returnPath);
if (!baseDir.exists()) {
baseDir.mkdirs();
}
return returnPath;
}

@Command
@NotifyChange("filesList")
public void onDelete(@BindingParam("currentFile") String curFile)
{
filesList.remove(curFile);
}
}

Email ThisBlogThis!Share to XShare to Facebook
Posted in ZK MVVM | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • ZK Example for inline Editing with Add New and Delete
    I am quite impressed on this demo from ZK . But adding new record and delete existing record is missing as part of typical CRUD. So i thoug...
  • Hibernate Validator Example 2
    In this example, we will see some more validation constraints such as @email, @past, @length, etc. And also we will also define custom error...
  • ZK Passing Parameter between two files using MVVM–Part 1
    Overview This is the first series of articles about Passing parameter between two zul files using MVVM Design pattern .This article will fo...
  • ZK Border Layout–Another example
    This examples show how you can use ZK Border Layout to show the product information on clicking image. ZK Version 6 Project Name : BorderL...
  • EDI 270–5010 Documentation - ISA – Interchange Control Header
    ISA – Interchange Control Header ISA – Interchange Control Header   The ISA is a fixed record length segment and all positions within ea...
  • ZK MVVM Form Binding CRUD with Spring and Hibernate - Part 11
    Storing Image in the Database          My Sincere thanks to Joshi who helped me in this article In the last article , we have successfu...
  • ViewModel Class Java Annotation @Init, @NotifyChange, @Command
    In following sections we'll list all syntaxes that can be used in implementing a ViewModel and applying ZK bind annotation. The ZK binde...
  • Load Tab box Content on Demand Using MVVM
    ZK Version : 6.5.0 CE In this post, let us see how we can load individual ZUL File on each tab box content Step : 1 First let us create indi...
  • ZK MVVM Form Binding CRUD with Spring and Hibernate - Part 4
    Presentation Layer using ZK Framework          In part 3 , We have completed Spring integration with hibernate. In this post, we will des...
  • ZK composite component Example
    Thanks to benbai for helping me in the ZK Forum to complete this example. This example shows how to create our own component using ZK C...

Categories

  • Billing Process
  • C Workbook
  • C++ Workbook
  • Eclipse Tips
  • EDI 5010
  • EMR Appointment Features
  • EMR Labs Stuff
  • EMR PMS Links
  • EMR Use cases
  • EMR Vital Sign
  • Good Website Design
  • Hibernate Criteria Queries
  • Hibernate Introduction
  • Hibernate Introduction Setup
  • Hibernate Mapping
  • Hibernate POC
  • Hibernate Validator
  • Hibernate–Java Environment setup
  • HPI
  • Java
  • Maven
  • MU Certification
  • NPI
  • PQRS
  • Practice Management System
  • Spring Security
  • Tech Links
  • Today Tech Stuff
  • zk
  • ZK Hibernate
  • ZK 5 Databinding
  • ZK Application
  • ZK Calling Another ZUL
  • ZK CheckBox
  • ZK CreateComponents
  • ZK CSS
  • ZK extended Components
  • ZK Foreach
  • ZK Forum Posts
  • ZK Framework
  • ZK Hibernate Setup
  • ZK ID Space
  • ZK Include
  • ZK Installation
  • ZK iReport
  • ZK Layout
  • ZK Listitem Pagination
  • ZK Message Box
  • ZK MVC
  • ZK MVC Combox Box
  • ZK MVC CRUD Examples
  • ZK MVC Listbox
  • ZK MVVM
  • ZK MVVM Combo
  • ZK MVVM CRUD
  • ZK MVVM ListBox
  • ZK Spring
  • ZK TextBox

Blog Archive

  • ▼  2013 (105)
    • ►  December (3)
    • ►  September (7)
    • ▼  August (13)
      • HL7 Parsing–My Own Parser
      • ZK Dropupload example
      • Hibernate Custom validator to validate Multiple em...
      • ZK List box inline Editing with Add New and Delete...
      • ZK Example for inline Editing with Add New and Delete
      • Patient Demographics and Patient cases
      • How to get Current Date and Time and store in the ...
      • Maintaining Patient Insurance
      • EDI Transactions
      • Health care Coding system
      • ZK upload PDF to server and show in the screen us...
      • ZK Quick InputBox
      • HL7 Parsing
    • ►  July (1)
    • ►  June (11)
    • ►  May (3)
    • ►  April (14)
    • ►  March (19)
    • ►  February (21)
    • ►  January (13)
  • ►  2012 (177)
    • ►  December (1)
    • ►  November (13)
    • ►  October (19)
    • ►  September (24)
    • ►  August (26)
    • ►  July (6)
    • ►  June (37)
    • ►  May (30)
    • ►  April (16)
    • ►  March (1)
    • ►  January (4)
  • ►  2011 (5)
    • ►  December (1)
    • ►  November (1)
    • ►  July (1)
    • ►  June (1)
    • ►  April (1)
  • ►  2010 (1)
    • ►  September (1)
Powered by Blogger.

About Me

Unknown
View my complete profile