container.setStyleAttribute("margin", "20px");
container.setSize(650, 300);
container.setBorders(true);
container.setLayout(new BorderLayout());
ContentPanel west = new ContentPanel();
west.setHeading("My Albums");
ToolBar toolBar = new ToolBar();
Button newAlbum = new Button("New Album");
newAlbum.setIcon(Resources.ICONS.album());
newAlbum.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
MessageBox.prompt("New Album", "Enter the new album name:", new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) {
if (be.getButtonClicked().getItemId().equals(Dialog.OK) && be.getValue() != null) {
tree.getStore().add(createAlbum(be.getValue()), false);
tree.setLeaf(tree.getStore().getRootItems().get(tree.getStore().getRootItems().size() - 1), false);
}
}
});
}
});
toolBar.add(newAlbum);
west.setTopComponent(toolBar);
TreeStore<ModelData> treeStore = new TreeStore<ModelData>();
tree = new TreePanel<ModelData>(treeStore);
tree.setDisplayProperty("name");
tree.getStyle().setLeafIcon(IconHelper.create("user"));
tree.getStyle().setNodeCloseIcon(IconHelper.create("icon-album"));
tree.getStyle().setNodeOpenIcon(IconHelper.create("icon-album"));
west.add(tree);
treeStore.add(createAlbum("Album 1"), false);
tree.setLeaf(treeStore.getRootItems().get(0), false);
BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 200, 100, 300);
westData.setMargins(new Margins(5, 0, 5, 5));
westData.setSplit(true);
container.add(west, westData);
ContentPanel center = new ContentPanel();
center.setHeading("My Images");
// center.setScrollMode(Scroll.AUTO);
center.setLayout(new FitLayout());
BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER);
centerData.setMargins(new Margins(5));
container.add(center, centerData);
final ExampleServiceAsync service = (ExampleServiceAsync) Registry.get(Examples.SERVICE);
RpcProxy<List<Photo>> proxy = new RpcProxy<List<Photo>>() {
@Override
protected void load(Object loadConfig, AsyncCallback<List<Photo>> callback) {
service.getPhotos(callback);
}
};
ListLoader<ListLoadResult<BeanModel>> loader = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
new BeanModelReader());
ListStore<BeanModel> store = new ListStore<BeanModel>(loader);
loader.load();
ListView<BeanModel> view = new ListView<BeanModel>() {
@Override
protected BeanModel prepareData(BeanModel model) {
Photo photo = model.getBean();
long size = photo.getSize() / 1000;
model.set("shortName", Format.ellipse(photo.getName(), 15));
model.set("sizeString", NumberFormat.getFormat("#0").format(size) + "k");
model.set("dateString", DateTimeFormat.getMediumDateTimeFormat().format(photo.getDate()));
model.set("path", GWT.getHostPageBaseURL() + photo.getPath());
return model;
}
};
view.setId("img-chooser-view");
view.setTemplate(getTemplate());
view.setBorders(false);
view.setStore(store);
view.setItemSelector("div.thumb-wrap");
center.add(view);
new ListViewDragSource(view);
TreePanelDropTarget target = new TreePanelDropTarget(tree) {
@SuppressWarnings("rawtypes")