This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
vmereports-manager-portlet/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/DropImageListener.java

123 lines
3.7 KiB
Java

/**
*
*/
package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.List;
import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItemType;
import org.gcube.portlets.user.workspace.client.workspace.folder.GWTFolderItem;
import org.gcube.portlets.user.workspace.client.workspace.folder.GWTFolderItemType;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTImageDocument;
import com.extjs.gxt.ui.client.dnd.DropTarget;
import com.extjs.gxt.ui.client.dnd.Insert;
import com.extjs.gxt.ui.client.dnd.DND.Operation;
import com.extjs.gxt.ui.client.event.DNDEvent;
import com.extjs.gxt.ui.client.store.TreeStoreModel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.google.gwt.core.client.GWT;
/**
* @author Massimiliano Assante assante@isti.cnr.it
*
*/
public class DropImageListener extends DropTarget {
/**
*
*/
public static final String TIFF = "image/tiff";
protected DroppingArea panel;
/**
*
* @param panel .
* @param config .
*/
public DropImageListener(DroppingArea panel) {
super(panel);
this.panel = panel;
//IMPORTANT
setOperation(Operation.COPY);
}
@Override
protected void showFeedback(DNDEvent event) {
if (!isValidDropTarget(event)) {
Insert.get().hide();
event.getStatus().setStatus(false);
return;
}
super.showFeedback(event);
}
@SuppressWarnings("unchecked")
private boolean isValidDropTarget(DNDEvent event) {
GWT.log("isValidDropTarget");
TreePanel<FileModel> source = (TreePanel<FileModel>) event.getDragSource().getComponent();
List<FileModel> selection = source.getSelectionModel().getSelection();
for (FileModel model : selection) {
GWT.log("selection: " + model.getGXTFolderItemType());
if(model.getGXTFolderItemType()!=null){
if (model.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.EXTERNAL_IMAGE) || model.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.IMAGE_DOCUMENT))
return true;
//
// if (model.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.TIME_SERIES))
// return true;
// if(source.getStore().getParent(model) == target.getModel())
// return false;
}
}
return false;
}
/**
* @param source .
* @param e .
* @param data .
* @return .
*/
protected void onDragDrop(DNDEvent event) {
super.onDragDrop(event);
if(event.getData() != null){
List<TreeStoreModel> listItemsSource = event.getData();
GWT.log("Number of move " + listItemsSource.size());
FileModel sourceFileModel = null; //for print
for(TreeStoreModel itemSource : listItemsSource){
sourceFileModel = (FileModel) itemSource.getModel();
if(sourceFileModel.getParentFileModel()!=null)
GWT.log("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag " + " Parent Name: " + sourceFileModel.getParentFileModel().getName() + "id " + sourceFileModel.getParentFileModel().getIdentifier());
else
GWT.log("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag ");
GWT.log("Child count: " + itemSource.getChildCount());
panel.fetchImage(sourceFileModel.getIdentifier(), false , true);
}
}
}
}