lib-gwt-file
リンク
使い方
準備
GWT2.4の場合
- lib-gwt-file-0.2.jarを取得しパスを通す。
プロジェクトのgwt.xmlに「 <inherits name="org.vectomatic.libgwtfile" />」を追加する。
DropPanel
最も単純な場合を示す。ドロップされたテキストファイルの中身を表示する。注意事項としては、
- org.vectomatic.file.events以下のドラッグドロップイベントとハンドラはもはや使われていない。GWT標準のものが使われている。
package com.mycompany.project.client; import org.vectomatic.dnd.*; import org.vectomatic.file.*; import com.google.gwt.core.client.*; import com.google.gwt.dom.client.*; import com.google.gwt.dom.client.Style.BorderStyle; import com.google.gwt.event.dom.client.*; import com.google.gwt.user.client.ui.*; public class ImageViewer implements EntryPoint { public void onModuleLoad() { RootPanel rootPanel = RootPanel.get(); DropPanel dropPanel = new DropPanel(); final Style style = dropPanel.getElement().getStyle(); style.setBorderStyle(BorderStyle.SOLID); dropPanel.getElement().getStyle().setBorderColor("#ff0000"); // これは不必要に思えるが、無いとブラウザ側にドロップが伝えられてしまう。 dropPanel.addDragOverHandler(new DragOverHandler() { public void onDragOver(DragOverEvent e) { e.stopPropagation(); e.preventDefault(); } }); dropPanel.addDropHandler(new DropHandler() { public void onDrop(DropEvent event) { processFiles(event.getDataTransfer().<DataTransferExt> cast().getFiles()); event.stopPropagation(); event.preventDefault(); } }); rootPanel.add(dropPanel, 5, 5); dropPanel.setSize("250px", "234px"); } private void processFiles(FileList files) { System.out.println("file count:" + files.getLength()); for (File file : files) { System.out.println("file:" + file.getName() + "," + file.getUrn() + "," + file.getType()); final FileReader reader = new FileReader(); reader.addLoadEndHandler(new org.vectomatic.file.events.LoadEndHandler() { @Override public void onLoadEnd(org.vectomatic.file.events.LoadEndEvent event) { System.out.println("onLoadEnd " + reader.getResult()); } }); reader.readAsText(file); } } }
FileUploadExt
package com.mycompany.project.client; import org.vectomatic.file.*; import com.google.gwt.core.client.*; import com.google.gwt.event.dom.client.*; import com.google.gwt.user.client.ui.*; public class ImageViewer implements EntryPoint { public void onModuleLoad() { RootPanel rootPanel = RootPanel.get(); final FileUploadExt fileUploadExt = new FileUploadExt(); fileUploadExt.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent event) { processFiles(fileUploadExt.getFiles()); } }); rootPanel.add(fileUploadExt, 10, 10); } /** processFilesはDropPanelの場合と同じ */