2013-02-06 15:40:17 +01:00
package org.gcube.portlets.user.workspace.client.view.tree ;
import java.util.ArrayList ;
import java.util.List ;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer ;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer ;
2013-03-26 17:31:13 +01:00
import org.gcube.portlets.user.workspace.client.constant.WorkspaceOperation ;
2013-02-06 15:40:17 +01:00
import org.gcube.portlets.user.workspace.client.event.ExpandFolderEvent ;
import org.gcube.portlets.user.workspace.client.event.MoveItemEvent ;
import org.gcube.portlets.user.workspace.client.event.SelectedItemEvent ;
2013-09-04 15:30:17 +02:00
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent ;
2013-02-06 15:40:17 +01:00
import org.gcube.portlets.user.workspace.client.model.FileModel ;
import org.gcube.portlets.user.workspace.client.model.FolderModel ;
import org.gcube.portlets.user.workspace.client.resources.Resources ;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert ;
2013-09-04 15:30:17 +02:00
import org.gcube.portlets.user.workspace.shared.SessionExpiredException ;
2013-02-06 15:40:17 +01:00
import com.extjs.gxt.ui.client.Style.SelectionMode ;
import com.extjs.gxt.ui.client.data.ModelData ;
import com.extjs.gxt.ui.client.data.ModelIconProvider ;
import com.extjs.gxt.ui.client.dnd.DND.Feedback ;
import com.extjs.gxt.ui.client.dnd.Insert ;
import com.extjs.gxt.ui.client.dnd.TreePanelDragSource ;
import com.extjs.gxt.ui.client.dnd.TreePanelDropTarget ;
import com.extjs.gxt.ui.client.event.ButtonEvent ;
import com.extjs.gxt.ui.client.event.ComponentEvent ;
import com.extjs.gxt.ui.client.event.DNDEvent ;
import com.extjs.gxt.ui.client.event.DNDListener ;
import com.extjs.gxt.ui.client.event.EventType ;
import com.extjs.gxt.ui.client.event.Events ;
import com.extjs.gxt.ui.client.event.Listener ;
import com.extjs.gxt.ui.client.event.MenuEvent ;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent ;
import com.extjs.gxt.ui.client.event.SelectionChangedListener ;
import com.extjs.gxt.ui.client.event.TreePanelEvent ;
import com.extjs.gxt.ui.client.store.Record ;
import com.extjs.gxt.ui.client.store.Store ;
import com.extjs.gxt.ui.client.store.StoreSorter ;
import com.extjs.gxt.ui.client.store.TreeStore ;
import com.extjs.gxt.ui.client.store.TreeStoreModel ;
2014-01-14 14:26:41 +01:00
import com.extjs.gxt.ui.client.widget.Component ;
2013-02-06 15:40:17 +01:00
import com.extjs.gxt.ui.client.widget.ContentPanel ;
import com.extjs.gxt.ui.client.widget.LayoutContainer ;
import com.extjs.gxt.ui.client.widget.button.Button ;
import com.extjs.gxt.ui.client.widget.layout.FitLayout ;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel ;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.TreeNode ;
2013-09-04 16:34:31 +02:00
import com.google.gwt.core.client.GWT ;
2013-02-06 15:40:17 +01:00
import com.google.gwt.event.shared.HandlerManager ;
import com.google.gwt.user.client.Event ;
import com.google.gwt.user.client.rpc.AsyncCallback ;
import com.google.gwt.user.client.ui.AbstractImagePrototype ;
/ * *
2016-08-29 15:39:13 +02:00
* The Class AsyncTreePanel .
2013-02-06 15:40:17 +01:00
*
2016-08-29 15:39:13 +02:00
* @author Francesco Mangiacrapa francesco . mangiacrapa @isti.cnr.it
2016-09-15 16:42:20 +02:00
* Sep 15 , 2016
2013-02-06 15:40:17 +01:00
* /
public class AsyncTreePanel extends LayoutContainer {
2013-07-08 17:42:08 +02:00
private static final String TREE_MESSAGE_PANEL_ASYNC = " treeMessagePanelAsync " ;
2016-08-29 15:39:13 +02:00
2014-10-28 17:12:40 +01:00
private static final String ROOT_SUFFIX = " 's workspace " ;
2016-08-29 15:39:13 +02:00
private String myRootDisplayName = null ;
2013-03-26 11:51:44 +01:00
// private TreeLoader<FileModel> loader;
2013-02-06 15:40:17 +01:00
private TreePanel < FileModel > treePanel ;
private TreeStore < FileModel > store ;
private ContextMenuTree contextMenuTree ;
private HandlerManager eventBus = AppControllerExplorer . getEventBus ( ) ;
private ContentPanel cp = new ContentPanel ( ) ;
private boolean isSubTreeLoaded = false ;
private boolean isSearch = false ;
private String scopeId = null ;
2016-08-29 15:39:13 +02:00
/ * *
* The Enum DragType .
*
* @author Francesco Mangiacrapa francesco . mangiacrapa @isti.cnr.it
* Aug 29 , 2016
* /
2013-02-06 15:40:17 +01:00
private enum DragType { INSERT , APPEND } ;
private boolean rightClick = false ;
2016-08-29 15:39:13 +02:00
/ * *
* Instantiates a new async tree panel .
* /
2013-02-06 15:40:17 +01:00
public AsyncTreePanel ( ) {
//Init Store
store = new TreeStore < FileModel > ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
//Load Root Item
// this.loadRootItem();
2016-08-29 15:39:13 +02:00
treePanel = new TreePanel < FileModel > ( store ) {
2013-02-06 15:40:17 +01:00
@Override
public boolean hasChildren ( FileModel parent ) {
if ( parent instanceof FolderModel ) {
return true ;
}
return super . hasChildren ( parent ) ;
}
@Override
@SuppressWarnings ( { " unchecked " , " rawtypes " } )
public void onComponentEvent ( ComponentEvent ce ) {
super . onComponentEvent ( ce ) ;
TreePanelEvent < FileModel > tpe = ( TreePanelEvent ) ce ;
EventType typeEvent = tpe . getType ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
rightClick = false ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( typeEvent = = Events . OnMouseDown ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( ce . isRightClick ( ) ) {
rightClick = true ;
}
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
int type = ce . getEventTypeInt ( ) ;
switch ( type ) {
case Event . ONCLICK :
onClick ( tpe ) ;
break ;
case Event . ONDBLCLICK :
onDoubleClick ( tpe ) ;
break ;
case Event . ONSCROLL :
onScroll ( tpe ) ;
break ;
case Event . ONFOCUS :
onFocus ( ce ) ;
break ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
view . onEvent ( tpe ) ;
}
} ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
treePanel . setStateful ( false ) ;
2016-09-15 16:42:20 +02:00
treePanel . setDisplayProperty ( FileModel . NAME ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// statefull components need a defined id
2013-03-26 11:51:44 +01:00
treePanel . setId ( TREE_MESSAGE_PANEL_ASYNC ) ;
2013-02-06 15:40:17 +01:00
// SET icons in tree panel
treePanel . setIconProvider ( new ModelIconProvider < FileModel > ( ) {
2016-08-29 15:39:13 +02:00
public AbstractImagePrototype getIcon ( final FileModel model ) {
2013-03-26 11:41:25 +01:00
// model.setIcon();
2016-09-14 12:39:47 +02:00
// ConstantsExplorer.log("getIcon Model is root?: "+model.isRoot() + " name: "+model.getName());
2013-02-06 15:40:17 +01:00
if ( ! model . isDirectory ( ) ) {
if ( model . getType ( ) ! = null )
2015-07-14 15:45:34 +02:00
return Resources . getIconByType ( model . getName ( ) , model . getType ( ) ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return Resources . getIconByFolderItemType ( model . getGXTFolderItemType ( ) ) ;
}
2016-09-15 16:42:20 +02:00
if ( model . isRoot ( ) ) { //IS ROOT?
2016-08-29 15:39:13 +02:00
//ConstantsExplorer.log("getIcon isRoot Model is: "+model);
if ( AppControllerExplorer . myLoginFirstName = = null | | AppControllerExplorer . myLoginFirstName . isEmpty ( ) ) {
ConstantsExplorer . log ( " Getting My First Name from server, into myLoginFirstName call is null yet " ) ;
AppControllerExplorer . rpcWorkspaceService . getMyFirstName ( new AsyncCallback < String > ( ) {
@Override
public void onFailure ( Throwable caught ) {
GWT . log ( " Error on re-loading my login is empty " ) ;
ConstantsExplorer . log ( " Error on re-loading my first name is empty " ) ;
}
@Override
public void onSuccess ( String firstName ) {
if ( firstName = = null | | firstName . isEmpty ( ) )
model . setName ( " My Workspace " ) ;
else
setRootDisplayName ( model , AppControllerExplorer . myLoginFirstName + ROOT_SUFFIX , true ) ;
}
} ) ;
} else {
setRootDisplayName ( model , AppControllerExplorer . myLoginFirstName + ROOT_SUFFIX , false ) ;
}
2014-10-28 17:12:40 +01:00
return Resources . getCloudDriveIcon ( ) ;
}
2013-03-26 11:41:25 +01:00
2013-02-06 15:40:17 +01:00
if ( model . getStatus ( ) = = ConstantsExplorer . FOLDERNOTLOAD )
return Resources . getIconLoading2 ( ) ;
2016-08-29 15:39:13 +02:00
2016-09-15 16:42:20 +02:00
if ( model . isVreFolder ( ) ) //IS VRE?
2014-02-13 16:12:37 +01:00
return Resources . getIconVREFolder ( ) ;
2016-08-29 15:39:13 +02:00
2016-09-15 16:42:20 +02:00
if ( model . isSpecialFolder ( ) ) //IS SPECIAL FOLDER?
2014-03-05 17:45:33 +01:00
return Resources . getIconSpecialFolder ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-12 16:02:00 +01:00
//SHARE ICON
if ( model . isShared ( ) ) {
2016-09-15 16:42:20 +02:00
if ( model . isShareable ( ) ) { //IS ROOT SHARED FOLDER
if ( model . isPublic ( ) ) //IS PUBLIC
return Resources . getIconFolderSharedPublic ( ) ;
else
return Resources . getIconSharedFolder ( ) ;
} else { //IS DESCENDANT
if ( model . isPublic ( ) ) //IS PLUBIC
return Resources . getIconFolderPublic ( ) ;
else
return Resources . getIconFolder ( ) ;
}
}
if ( model . isDirectory ( ) ) {
if ( model . isPublic ( ) ) //IS PLUBIC
return Resources . getIconFolderPublic ( ) ;
2013-02-12 16:02:00 +01:00
else
2016-09-15 16:42:20 +02:00
return Resources . getIconFolder ( ) ;
2013-02-12 16:02:00 +01:00
}
2016-09-15 16:42:20 +02:00
2013-02-12 16:02:00 +01:00
return null ; //Set default folder icon
2013-02-06 15:40:17 +01:00
}
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
contextMenuTree = new ContextMenuTree ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
treePanel . setContextMenu ( contextMenuTree . getContextMenu ( ) ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
//Single selection Mode
treePanel . getSelectionModel ( ) . setSelectionMode ( SelectionMode . SINGLE ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
this . addListners ( ) ;
this . addDragAndDrop ( ) ;
this . setAlphanumericStoreSorter ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
cp . setHeading ( ConstantsExplorer . TREEVIEW ) ;
cp . setHeaderVisible ( false ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// //BULK
// Header headerCp = cp.getHeader();
// buttBulk.setIcon(Resources.getIconBulkUpdate());
// headerCp.addTool(buttBulk);
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
cp . setBodyBorder ( false ) ;
cp . setBodyStyle ( " padding: 5px " ) ;
cp . setLayout ( new FitLayout ( ) ) ;
2016-08-29 15:39:13 +02:00
//***For Debug the store
2013-02-06 15:40:17 +01:00
Button butt = new Button ( ) ;
butt . setText ( " Print Store " ) ;
butt . setVisible ( false ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
butt . addListener ( Events . OnClick , new Listener < ButtonEvent > ( ) {
@Override
public void handleEvent ( ButtonEvent be ) {
List < FileModel > listFileModel = treePanel . getStore ( ) . getRootItems ( ) ;
System . out . println ( " \ n \ nStore by root " ) ;
for ( FileModel item : listFileModel ) {
System . out . println ( item . getName ( ) + " ID " + item . getIdentifier ( ) + " isDirectory " + item . isDirectory ( ) ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// eventBus.fireEvent(new SelectedItemEvent(treePanel.getStore().getRootItems().get(0)));
printingTreeLevel ( item ) ;
}
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// cp.add(butt);
2016-08-29 15:39:13 +02:00
//***End Debug the store
2013-02-06 15:40:17 +01:00
cp . add ( treePanel ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
add ( cp ) ;
2016-08-29 15:39:13 +02:00
}
/ * *
* Sets the root display name .
*
2016-09-15 16:42:20 +02:00
* @param root the root
2016-08-29 15:39:13 +02:00
* @param name the name
* @param forceOverwrite the force overwrite
* /
private void setRootDisplayName ( FileModel root , String name , boolean forceOverwrite ) {
if ( myRootDisplayName = = null | | forceOverwrite ) {
myRootDisplayName = name ;
root . setName ( myRootDisplayName ) ;
}
2013-02-06 15:40:17 +01:00
}
/ * *
* Status values
* ConstantsExplorer . FOLDERNOTLOAD = " notload " ;
* ConstantsExplorer . FOLDERLOADED = " loaded " ;
2016-08-29 15:39:13 +02:00
*
* @param itemIdentifier the item identifier
* @param status the status
2013-02-06 15:40:17 +01:00
* /
public void changeFolderIconStatus ( String itemIdentifier , String status ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel fileModel = getFileModelByIdentifier ( itemIdentifier ) ;
fileModel . setStatus ( status ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Load root item .
*
* @param scopeId the scope id
* @param selectRoot the select root
* /
2013-02-06 15:40:17 +01:00
public void loadRootItem ( String scopeId , final boolean selectRoot ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
this . scopeId = scopeId ;
System . out . println ( " ***Start Root load with scopeid: " + scopeId ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( this . scopeId ! = null ) {
//Load Root with specific scope id
AppControllerExplorer . rpcWorkspaceService . getRootForTree ( scopeId , new AsyncCallback < FolderModel > ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
public void onFailure ( Throwable caught ) {
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting root item. " + ConstantsExplorer . TRY_AGAIN , null ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
public void onSuccess ( FolderModel result ) {
loadRootInStore ( result , selectRoot ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
} ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
else {
//Load Root without filtering on scope id
AppControllerExplorer . rpcWorkspaceService . getRootForTree ( new AsyncCallback < FolderModel > ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
public void onFailure ( Throwable caught ) {
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting root item. " + ConstantsExplorer . TRY_AGAIN , null ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
public void onSuccess ( FolderModel result ) {
loadRootInStore ( result , selectRoot ) ;
}
} ) ;
2016-08-29 15:39:13 +02:00
}
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Load root in store .
*
* @param root the root
* @param selectRootOnLoad the select root on load
* /
2013-02-06 15:40:17 +01:00
private void loadRootInStore ( FolderModel root , boolean selectRootOnLoad ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( root ! = null ) {
store . removeAll ( ) ;
store . insert ( root , 0 , false ) ;
2016-09-15 16:42:20 +02:00
System . out . println ( " Root Name: " + store . getRootItems ( ) . get ( 0 ) . get ( FileModel . NAME ) ) ;
2013-02-06 15:40:17 +01:00
treePanel . setExpanded ( store . getRootItems ( ) . get ( 0 ) , true ) ; //expand level 1
if ( selectRootOnLoad )
selectRootItem ( ) ; //select root item
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
System . out . println ( " ***End Root load " ) ;
}
else
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting root item. Root item is null " + ConstantsExplorer . TRY_AGAIN , null ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the drag and drop .
* /
2013-02-06 15:40:17 +01:00
private void addDragAndDrop ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
//Drag & Drop Event
TreePanelDragSource source = new TreePanelDragSource ( treePanel ) ;
source . addDNDListener ( new DNDListener ( ) {
@Override
public void dragStart ( DNDEvent event ) {
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
GWT . log ( " ***Event Start drag " ) ;
2013-02-06 15:40:17 +01:00
FileModel sel = treePanel . getSelectionModel ( ) . getSelectedItem ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( sel ! = null & & sel = = treePanel . getStore ( ) . getRootItems ( ) . get ( 0 ) ) {
event . setCancelled ( true ) ;
event . getStatus ( ) . setStatus ( false ) ;
return ;
}
2016-08-29 15:39:13 +02:00
2014-03-05 17:45:33 +01:00
if ( sel . isVreFolder ( ) | | sel . isSpecialFolder ( ) ) {
2014-02-19 17:02:28 +01:00
event . setCancelled ( true ) ;
event . getStatus ( ) . setStatus ( false ) ;
return ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( sel ! = null & & sel . getName ( ) ! = null )
2015-10-05 18:33:14 +02:00
GWT . log ( " Start drag of " + sel . getName ( ) ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
super . dragStart ( event ) ;
}
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
TreePanelDropTarget targetTreePanel = new TreePanelDropTarget ( treePanel ) {
// @Override
// protected void onDragDrop(DNDEvent event) {
// System.out.println("on Drop");
// super.onDragDrop(event);
// }
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// @Override
// protected void showFeedback(DNDEvent event) {
// // TODO Auto-generated method stub
// super.showFeedback(event);
2016-08-29 15:39:13 +02:00
//
2013-02-06 15:40:17 +01:00
// }
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
protected void showFeedback ( DNDEvent event ) {
if ( ! isValidDropTarget ( event ) ) {
Insert . get ( ) . hide ( ) ;
event . getStatus ( ) . setStatus ( false ) ;
return ;
}
super . showFeedback ( event ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@SuppressWarnings ( " unchecked " )
private boolean isValidDropTarget ( DNDEvent event ) {
TreePanel < FileModel > target = ( TreePanel < FileModel > ) event . getDropTarget ( ) . getComponent ( ) ;
TreePanel < FileModel > . TreeNode zone = target . findNode ( event . getTarget ( ) ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( zone = = null ) {
return true ; // let it check from super-class
}
2016-08-29 15:39:13 +02:00
2014-01-14 14:26:41 +01:00
Component com = event . getDragSource ( ) . getComponent ( ) ;
2016-08-29 15:39:13 +02:00
2014-01-14 14:26:41 +01:00
if ( com instanceof TreePanel < ? > ) {
2016-08-29 15:39:13 +02:00
2014-01-14 14:26:41 +01:00
TreePanel < FileModel > source = ( TreePanel < FileModel > ) event . getDragSource ( ) . getComponent ( ) ;
List < FileModel > selection = source . getSelectionModel ( ) . getSelection ( ) ;
2013-02-06 15:40:17 +01:00
2014-01-14 14:26:41 +01:00
for ( FileModel model : selection ) {
// check the "model" against "zone" and return false
// if "zone" is not a valid drop target for "model", otherwise check the next "model"
// example:
2016-08-29 15:39:13 +02:00
if ( source . getStore ( ) . getParent ( model ) = = zone . getModel ( ) )
2014-01-14 14:26:41 +01:00
return false ;
2016-08-29 15:39:13 +02:00
2014-01-14 14:26:41 +01:00
// if(source.getStore().getParent(model) == target.getModel())
2014-03-07 16:40:10 +01:00
// return false;
2016-08-29 15:39:13 +02:00
2014-03-07 16:40:10 +01:00
if ( zone . getModel ( ) . isSpecialFolder ( ) ) //NOT DROPPABLE INTO SPECIAL FOLDER
return false ;
2014-01-14 14:26:41 +01:00
}
return true ;
2013-02-06 15:40:17 +01:00
}
2014-01-14 14:26:41 +01:00
return false ;
2016-08-29 15:39:13 +02:00
2014-01-14 14:26:41 +01:00
// TreePanel<FileModel> source = (TreePanel<FileModel>) event.getDragSource().getComponent();
// List<FileModel> selection = source.getSelectionModel().getSelection();
//
// for (FileModel model : selection) {
// // check the "model" against "zone" and return false
// // if "zone" is not a valid drop target for "model", otherwise check the next "model"
// // example:
2016-08-29 15:39:13 +02:00
// if (source.getStore().getParent(model) == zone.getModel())
2014-01-14 14:26:41 +01:00
// return false;
2016-08-29 15:39:13 +02:00
//
2014-01-14 14:26:41 +01:00
//// if(source.getStore().getParent(model) == target.getModel())
//// return false;
// }
//
// return true;
2013-02-06 15:40:17 +01:00
}
//Called when drop on folder
@Override
protected void handleAppendDrop ( DNDEvent event , @SuppressWarnings ( " rawtypes " ) TreeNode item ) {
super . handleAppendDrop ( event , item ) ;
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
GWT . log ( " ***Event move handleAppendDrop " ) ;
2013-02-06 15:40:17 +01:00
List < FileModel > listFileModel = getDragSource ( event ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( listFileModel . size ( ) = = 1 ) {
FileModel destination = getDragDestination ( item , DragType . APPEND ) ;
if ( destination ! = null ) {
2014-01-14 14:26:41 +01:00
//REMOVE THIS COMMENT TODO
2014-01-14 14:41:03 +01:00
eventBus . fireEvent ( new MoveItemEvent ( listFileModel . get ( 0 ) , ( FolderModel ) destination ) ) ;
2016-08-29 15:39:13 +02:00
System . out . println ( " Destination: " + destination . getName ( ) + " id " + destination . getIdentifier ( ) ) ;
2013-02-06 15:40:17 +01:00
}
2015-10-05 18:33:14 +02:00
} else {
2013-02-06 15:40:17 +01:00
//MULTIDRAG
}
2015-10-05 18:33:14 +02:00
GWT . log ( " ***End Event move handleAppendDrop " ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// @Override
// protected void onDragMove(DNDEvent event){
//// System.out.println("on Drag Move");
// super.onDragMove(event);
// }
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
//Called when drop between files
@Override
protected void handleInsertDrop ( DNDEvent event , @SuppressWarnings ( " rawtypes " ) TreeNode item , int index ) {
super . handleInsertDrop ( event , item , index ) ;
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
GWT . log ( " ***Event move handleInsertDrop " ) ;
2013-02-06 15:40:17 +01:00
List < FileModel > listFileModel = getDragSource ( event ) ;
if ( listFileModel . size ( ) = = 1 ) { //one element dragged
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel destination = getDragDestination ( item , DragType . INSERT ) ;
2016-08-29 15:39:13 +02:00
if ( destination ! = null ) {
2015-10-05 18:33:14 +02:00
GWT . log ( " Destination: " + destination . getName ( ) + " id " + destination . getIdentifier ( ) ) ;
2014-01-14 14:26:41 +01:00
//REMOVE THIS COMMENT TODO
2014-01-14 14:41:03 +01:00
eventBus . fireEvent ( new MoveItemEvent ( listFileModel . get ( 0 ) , ( FolderModel ) destination ) ) ;
2013-02-06 15:40:17 +01:00
}
2015-10-05 18:33:14 +02:00
} else {
2013-02-06 15:40:17 +01:00
//multi drag
}
2016-08-29 15:39:13 +02:00
GWT . log ( " ***End Event move handleInsertDrop " ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
private FileModel getDragDestination ( @SuppressWarnings ( " rawtypes " ) TreeNode item , DragType insertType ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel destination = null ;
if ( item ! = null ) {
destination = ( FileModel ) item . getModel ( ) ;
if ( destination ! = null ) {
if ( insertType . equals ( DragType . APPEND ) )
return destination ; //APPEND ON FOLDER
else
return destination . getParentFileModel ( ) ; //INSERT BETWEEN FILE - RETUR FOLDER PARENT
}
}
return destination ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
private List < FileModel > getDragSource ( DNDEvent event ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
List < FileModel > listDraggedFile = new ArrayList < FileModel > ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( event . getData ( ) ! = null ) {
List < TreeStoreModel > listItemsSource = event . getData ( ) ;
2015-10-05 18:33:14 +02:00
GWT . log ( " Number of move " + listItemsSource . size ( ) ) ;
2013-02-06 15:40:17 +01:00
FileModel sourceFileModel = null ; //for print
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
for ( TreeStoreModel itemSource : listItemsSource ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
listDraggedFile . add ( ( FileModel ) itemSource . getModel ( ) ) ;
sourceFileModel = ( FileModel ) itemSource . getModel ( ) ;
if ( sourceFileModel . getParentFileModel ( ) ! = null )
2015-10-05 18:33:14 +02:00
GWT . log ( " Source Name " + sourceFileModel . getName ( ) + " id " + sourceFileModel . getIdentifier ( ) + " end drag " + " Parent Name: " + sourceFileModel . getParentFileModel ( ) . getName ( ) + " id " + sourceFileModel . getParentFileModel ( ) . getIdentifier ( ) ) ;
2013-02-06 15:40:17 +01:00
else
2015-10-05 18:33:14 +02:00
GWT . log ( " Source Name " + sourceFileModel . getName ( ) + " id " + sourceFileModel . getIdentifier ( ) + " end drag " ) ;
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
GWT . log ( " Child count: " + itemSource . getChildCount ( ) ) ;
2013-02-06 15:40:17 +01:00
}
}
return listDraggedFile ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// @Override
// protected void handleInsert(DNDEvent event, TreeNode treeNode){
// super.handleAppend(event, treeNode);
//// System.out.println("in handle insert");
// }
} ;
2015-10-05 18:33:14 +02:00
2013-02-06 15:40:17 +01:00
targetTreePanel . setAllowSelfAsSource ( true ) ;
targetTreePanel . setFeedback ( Feedback . APPEND ) ;
targetTreePanel . setScrollElementId ( cp . getId ( ) ) ;
// targetTreePanel.setAllowDropOnLeaf(true);
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the listners .
* /
2013-02-06 15:40:17 +01:00
private void addListners ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
treePanel . getSelectionModel ( ) . addSelectionChangedListener ( new SelectionChangedListener < FileModel > ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
@Override
public void selectionChanged ( SelectionChangedEvent < FileModel > objEvent ) {
FileModel fileModel = objEvent . getSelectedItem ( ) ;
if ( rightClick ) {
// treePanel.disableEvents(true);
// deselectItem(fileModel);
// treePanel.enableEvents(true);
return ;
}
System . out . println ( " ***Event selection change " ) ;
if ( fileModel ! = null & & ! isSearch ) { //is null on drag & drop event
//For printing
String type ;
if ( fileModel . getType ( ) ! = null )
type = fileModel . getType ( ) ;
else
type = " null " ;
2016-08-29 15:39:13 +02:00
2013-02-12 17:17:15 +01:00
//DEBUG
2013-02-13 18:39:33 +01:00
// String folderItemType;
// if(fileModel.getGXTFolderItemType()!=null)
// folderItemType = fileModel.getGXTFolderItemType().toString();
// else
// folderItemType = null;
// if(fileModel.getParentFileModel()!=null)
// System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent " + fileModel.getParentFileModel().getName() + " with id " + fileModel.getParentFileModel().getIdentifier() + " IsDirectory " + ""+fileModel.isDirectory() + " type "+ type + " HLFolderItemType "+folderItemType);
// else
// System.out.println("Item selected " + fileModel.getName() + " Id " + fileModel.getIdentifier() + " Parent null " + " IsDirectory " + ""+fileModel.isDirectory()+ " type "+ type +" HLFolderItemType "+folderItemType );
2016-08-29 15:39:13 +02:00
2013-02-12 17:17:15 +01:00
System . out . println ( " Item selected " + fileModel ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
eventBus . fireEvent ( new SelectedItemEvent ( fileModel ) ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
System . out . println ( " ***End Event selection change " ) ;
2016-08-29 15:39:13 +02:00
}
2013-02-06 15:40:17 +01:00
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// // Listner on Click
treePanel . addListener ( Events . OnClick , new Listener < TreePanelEvent < ModelData > > ( ) {
public void handleEvent ( TreePanelEvent < ModelData > be ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( be ! = null ) {
if ( isSearch ) { //TODO WORK AROUND - used after search
setSearch ( false ) ;
// FileModel fileModel = (FileModel) be.getNode().getModel();
// reSelectItem(fileModel.getIdentifier());
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
TreeNode node = be . getNode ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( node ! = null ) {
FileModel fileModel = ( FileModel ) be . getNode ( ) . getModel ( ) ;
reSelectItem ( fileModel . getIdentifier ( ) ) ;
}
}
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
} ;
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// // Listner on Menu Hide
treePanel . getContextMenu ( ) . addListener ( Events . Hide , new Listener < MenuEvent > ( ) {
@Override
public void handleEvent ( MenuEvent be ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( be ! = null )
deselectItem ( treePanel . getSelectionModel ( ) . getSelectedItem ( ) ) ;
}
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
treePanel . addListener ( Events . BeforeExpand , new Listener < TreePanelEvent < ModelData > > ( ) {
public void handleEvent ( final TreePanelEvent < ModelData > be ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( be ! = null & & ! isSubTreeLoaded ) {
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
GWT . log ( " ***Event beforeExpand Node " ) ;
2016-09-15 16:42:20 +02:00
GWT . log ( " Expand Folder Model: " + be . getNode ( ) . getModel ( ) . get ( FileModel . NAME ) ) ;
2013-02-06 15:40:17 +01:00
final FolderModel folder = ( FolderModel ) be . getNode ( ) . getModel ( ) ;
int numChildrenFolder = store . getChildCount ( folder ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( folder ! = null ) {
eventBus . fireEvent ( new ExpandFolderEvent ( folder ) ) ;
if ( numChildrenFolder = = 0 ) {
treePanel . mask ( ConstantsExplorer . LOADING , ConstantsExplorer . LOADINGSTYLE ) ;
loadTreeLevelFromWorkspace ( folder ) ;
}
}
2015-10-05 18:33:14 +02:00
GWT . log ( " ***End Event beforeExpand Node " ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
}
2013-02-06 15:40:17 +01:00
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// Add lister to context menu
treePanel . addListener ( Events . ContextMenu , new Listener < TreePanelEvent < FileModel > > ( ) {
public void handleEvent ( TreePanelEvent < FileModel > be ) {
2015-10-05 18:33:14 +02:00
GWT . log ( " ***Event Context Menu open " ) ;
2013-02-06 15:40:17 +01:00
@SuppressWarnings ( " rawtypes " )
TreeNode node = be . getNode ( ) ;
2013-02-13 18:39:33 +01:00
2013-02-06 15:40:17 +01:00
if ( node ! = null ) {
2016-09-15 16:42:20 +02:00
GWT . log ( " Menu on: " + node . getModel ( ) . get ( FileModel . NAME ) ) ;
2015-10-05 18:33:14 +02:00
GWT . log ( " node " + treePanel . findNode ( be . getTarget ( ) ) ) ;
2013-02-06 15:40:17 +01:00
} else {
2015-10-05 18:33:14 +02:00
GWT . log ( " Menu on: null " ) ;
GWT . log ( " node " + treePanel . findNode ( be . getTarget ( ) ) ) ;
2013-02-06 15:40:17 +01:00
}
List < FileModel > listSelected = treePanel . getSelectionModel ( ) . getSelectedItems ( ) ;
//
2016-08-29 15:39:13 +02:00
if ( listSelected ! = null & & listSelected . size ( ) > 0 ) {
2013-02-06 15:40:17 +01:00
manageContextMenu ( ) ;
}
//
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Manage context menu .
* /
2013-02-06 15:40:17 +01:00
private void manageContextMenu ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
System . out . println ( " ***Event Context Menu open " ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
contextMenuTree . setListSelectedItems ( treePanel . getSelectionModel ( ) . getSelectedItems ( ) ) ; //Set items list selected in context menu tree
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel selectedItem = treePanel . getSelectionModel ( ) . getSelectedItems ( ) . get ( 0 ) ; //get first element
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( store . getRootItems ( ) . get ( 0 ) . equals ( selectedItem ) ) { //selected root item?
setVisibleRenameAndRemoveContextMenu ( false ) ;
setVisibileGetWebDavUrl ( true ) ;
}
else {
setVisibleRenameAndRemoveContextMenu ( true ) ;
setVisibileGetWebDavUrl ( false ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
contextMenuTree . contextMenuSwitch ( selectedItem ) ;
System . out . println ( " ***End Event Context Menu open " ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Reload tree level and expand folder .
*
* @param folderIdentifier the folder identifier
* @param expandFolder the expand folder
* /
2013-06-10 16:34:52 +02:00
public void reloadTreeLevelAndExpandFolder ( String folderIdentifier , boolean expandFolder ) {
2017-09-13 14:58:30 +02:00
FolderModel folder = ( FolderModel ) getFileModelByIdentifier ( folderIdentifier ) ;
if ( folder ! = null )
reloadTreeLevelAndExpandFolder ( folder , expandFolder ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the item id and expand folder .
*
* @param parent the parent
* @param itemId the item id
* @param expandFolder the expand folder
* /
2015-10-05 18:33:14 +02:00
public void addItemIdAndExpandFolder ( final FileModel parent , String itemId , boolean expandFolder ) {
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
treePanel . mask ( ConstantsExplorer . VALIDATINGOPERATION , ConstantsExplorer . LOADINGSTYLE ) ;
AppControllerExplorer . rpcWorkspaceService . getItemForFileTree ( itemId , new AsyncCallback < FileModel > ( ) {
@Override
public void onFailure ( Throwable caught ) {
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
if ( caught instanceof SessionExpiredException ) {
GWT . log ( " Session expired " ) ;
eventBus . fireEvent ( new SessionExpiredEvent ( ) ) ;
return ;
}
treePanel . unmask ( ) ;
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting item from workspace. " + ConstantsExplorer . TRY_AGAIN , null ) ;
removeAllAndRecoveryRoot ( ) ;
}
2016-08-29 15:39:13 +02:00
2015-10-05 18:33:14 +02:00
@Override
public void onSuccess ( FileModel result ) {
GWT . log ( " GetItemForFileTree adding: " + result ) ;
treePanel . unmask ( ) ;
store . add ( parent , result , false ) ;
}
} ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Reload tree level and expand folder .
*
* @param folder the folder
* @param expandFolder the expand folder
* /
2013-06-10 16:34:52 +02:00
private void reloadTreeLevelAndExpandFolder ( final FolderModel folder , final boolean expandFolder ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
AppControllerExplorer . rpcWorkspaceService . getFolderChildren ( folder , new AsyncCallback < List < FileModel > > ( ) {
@Override
public void onFailure ( Throwable caught ) {
2016-08-29 15:39:13 +02:00
2013-09-04 16:49:50 +02:00
if ( caught instanceof SessionExpiredException ) {
GWT . log ( " Session expired " ) ;
eventBus . fireEvent ( new SessionExpiredEvent ( ) ) ;
return ;
}
2015-10-05 18:33:14 +02:00
treePanel . unmask ( ) ;
2013-02-27 19:17:22 +01:00
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting folder children items. " + ConstantsExplorer . TRY_AGAIN , null ) ;
2013-02-06 15:40:17 +01:00
removeAllAndRecoveryRoot ( ) ;
}
@Override
public void onSuccess ( List < FileModel > result ) {
2015-10-14 15:12:05 +02:00
treePanel . mask ( ConstantsExplorer . VALIDATINGOPERATION , ConstantsExplorer . LOADINGSTYLE ) ;
2013-02-06 15:40:17 +01:00
store . removeAll ( folder ) ;
2015-10-05 18:33:14 +02:00
// addChildrenToFolder(folder.getIdentifier(), result);
addChildrenToFolder ( folder , result ) ;
2013-06-10 16:34:52 +02:00
setExpandTreeLevel ( folder , expandFolder ) ;
2015-10-14 15:12:05 +02:00
treePanel . unmask ( ) ;
2013-02-06 15:40:17 +01:00
}
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Load tree level from workspace .
*
* @param folder the folder
* /
2013-02-06 15:40:17 +01:00
private void loadTreeLevelFromWorkspace ( final FolderModel folder ) {
2016-08-29 15:39:13 +02:00
GWT . log ( " Start RPC - getFolderChildren " ) ;
// Log.info("Start RPC - getFolderChildren");
2013-02-06 15:40:17 +01:00
// final CountTimer count = new CountTimer(1000);
2013-02-13 18:39:33 +01:00
2013-02-06 15:40:17 +01:00
AppControllerExplorer . rpcWorkspaceService . getFolderChildren ( folder , new AsyncCallback < List < FileModel > > ( ) {
@Override
public void onFailure ( Throwable caught ) {
2016-08-29 15:39:13 +02:00
2013-09-04 15:30:17 +02:00
if ( caught instanceof SessionExpiredException ) {
2013-09-04 16:34:31 +02:00
GWT . log ( " Session expired " ) ;
2013-09-04 15:30:17 +02:00
eventBus . fireEvent ( new SessionExpiredEvent ( ) ) ;
return ;
}
2016-08-29 15:39:13 +02:00
2013-02-27 19:17:22 +01:00
new MessageBoxAlert ( " Error " , ConstantsExplorer . SERVER_ERROR + " getting folder children items. " + ConstantsExplorer . TRY_AGAIN , null ) ;
2013-02-06 15:40:17 +01:00
removeAllAndRecoveryRoot ( ) ;
}
@Override
public void onSuccess ( List < FileModel > result ) {
if ( treePanel . isMasked ( ) )
treePanel . unmask ( ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
store . removeAll ( folder ) ;
addChildrenToFolder ( folder , result ) ;
2015-10-05 18:33:14 +02:00
GWT . log ( " End RPC - getFolderChildren " ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
} ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the children to folder .
*
* @param idParent the id parent
* @param children the children
* /
2013-02-06 15:40:17 +01:00
public void addChildrenToFolder ( String idParent , List < FileModel > children ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel parent = getFileModelByIdentifier ( idParent ) ;
if ( parent ! = null )
store . add ( parent , children , false ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the children to folder .
*
* @param parent the parent
* @param children the children
* /
2013-02-06 15:40:17 +01:00
private void addChildrenToFolder ( FolderModel parent , List < FileModel > children ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( parent ! = null ) {
store . add ( parent , children , false ) ;
System . out . println ( " Added children in store " ) ;
}
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the visible rename and remove context menu .
*
* @param bool the new visible rename and remove context menu
* /
2013-02-06 15:40:17 +01:00
private void setVisibleRenameAndRemoveContextMenu ( boolean bool ) {
2016-08-29 15:39:13 +02:00
2013-03-26 17:31:13 +01:00
treePanel . getContextMenu ( ) . getItemByItemId ( WorkspaceOperation . REMOVE . getId ( ) ) . setVisible ( bool ) ;
treePanel . getContextMenu ( ) . getItemByItemId ( WorkspaceOperation . RENAME . getId ( ) ) . setVisible ( bool ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the visibile get web dav url .
*
* @param bool the new visibile get web dav url
* /
2013-02-06 15:40:17 +01:00
private void setVisibileGetWebDavUrl ( boolean bool ) {
2013-03-26 17:31:13 +01:00
treePanel . getContextMenu ( ) . getItemByItemId ( WorkspaceOperation . WEBDAV_URL . getId ( ) ) . setVisible ( bool ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the alphanumeric store sorter .
* /
2013-02-06 15:40:17 +01:00
private void setAlphanumericStoreSorter ( ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// Sorting files
store . setStoreSorter ( new StoreSorter < FileModel > ( ) {
@Override
public int compare ( Store < FileModel > store , FileModel m1 , FileModel m2 , String property ) {
boolean m1Folder = m1 instanceof FolderModel ;
boolean m2Folder = m2 instanceof FolderModel ;
if ( m1Folder & & ! m2Folder ) {
return - 1 ;
} else if ( ! m1Folder & & m2Folder ) {
return 1 ;
}
2016-08-29 15:39:13 +02:00
2014-03-05 17:45:33 +01:00
if ( m1 . isSpecialFolder ( ) & & ! m2 . isSpecialFolder ( ) )
return - 1 ;
else if ( ! m1 . isSpecialFolder ( ) & & m2 . isSpecialFolder ( ) )
return 1 ;
2013-02-06 15:40:17 +01:00
return m1 . getName ( ) . compareToIgnoreCase ( m2 . getName ( ) ) ;
}
} ) ;
}
//TODO for debug
2016-08-29 15:39:13 +02:00
/ * *
* Printing tree level .
*
* @param item the item
* /
2013-02-06 15:40:17 +01:00
private void printingTreeLevel ( FileModel item ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
List < FileModel > children = treePanel . getStore ( ) . getChildren ( item ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( children ! = null ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
for ( FileModel item2 : children ) {
System . out . println ( " " + item2 . getName ( ) + " ID " + item2 . getIdentifier ( ) + " isDirectory " + item . isDirectory ( ) ) ;
printingTreeLevel ( item2 ) ;
}
System . out . println ( " " ) ;
}
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
/ * *
2016-08-29 15:39:13 +02:00
* Gets the file model by identifier .
*
* @param identifier the identifier
* @return the file model by identifier
2013-02-06 15:40:17 +01:00
* /
public FileModel getFileModelByIdentifier ( String identifier ) {
2016-08-29 15:39:13 +02:00
2016-09-15 16:42:20 +02:00
return treePanel . getStore ( ) . findModel ( FileModel . IDENTIFIER , identifier ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Gets the children number .
*
* @param identifier the identifier
* @return the children number
* /
2013-02-06 15:40:17 +01:00
public int getChildrenNumber ( String identifier ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FolderModel fileModel = ( FolderModel ) getFileModelByIdentifier ( identifier ) ;
return getChildrenNumber ( fileModel ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Gets the children number .
*
* @param folder the folder
* @return the children number
* /
2013-02-06 15:40:17 +01:00
private int getChildrenNumber ( FolderModel folder ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return store . getChildCount ( folder ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
/ * *
2016-08-29 15:39:13 +02:00
* Delete item .
*
2013-02-06 15:40:17 +01:00
* @param identifier ( MANDATORY )
2016-08-29 15:39:13 +02:00
* @return true , if successful
2013-02-06 15:40:17 +01:00
* /
public boolean deleteItem ( String identifier ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( fileTarget ! = null ) {
return deleteItem ( fileTarget ) ;
}
else
System . out . println ( " Delete Error: file target with " + identifier + " identifier not exist in store " ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return false ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
/ * *
2016-08-29 15:39:13 +02:00
* Rename item .
*
2013-02-06 15:40:17 +01:00
* @param fileTarget ( MANDATORY )
* @param newName ( MANDATORY )
* @param extension OPTIONAL - string or null
2016-08-29 15:39:13 +02:00
* @return true , if successful
2013-02-06 15:40:17 +01:00
* /
private boolean renameItem ( FileModel fileTarget , String newName , String extension ) {
if ( fileTarget ! = null ) {
Record record = treePanel . getStore ( ) . getRecord ( fileTarget ) ;
if ( record ! = null ) {
if ( extension ! = null )
2016-09-15 16:42:20 +02:00
record . set ( FileModel . NAME , newName + extension ) ;
2013-02-06 15:40:17 +01:00
else
2016-09-15 16:42:20 +02:00
record . set ( FileModel . NAME , newName ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return true ;
}
else
System . out . println ( " Record Error: file target with " + fileTarget . getIdentifier ( ) + " identifier not exist in store " ) ;
}
else
System . out . println ( " Rename Error: file target not exist in store " ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return false ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
/ * *
2016-08-29 15:39:13 +02:00
* Rename item .
*
* @param identifier the identifier
2013-02-06 15:40:17 +01:00
* @param newName ( MANDATORY )
* @param extension OPTIONAL - string or null
2016-08-29 15:39:13 +02:00
* @return true , if successful
2013-02-06 15:40:17 +01:00
* /
public boolean renameItem ( String identifier , String newName , String extension ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
// FileModel fileTarget = treePanel.getStore().findModel(ConstantsExplorer.IDENTIFIER, identifier);
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return renameItem ( fileTarget , newName , extension ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}
/ * *
2016-08-29 15:39:13 +02:00
* Delete item .
*
2013-02-06 15:40:17 +01:00
* @param fileTarget ( MANDATORY )
2016-08-29 15:39:13 +02:00
* @return true , if successful
2013-02-06 15:40:17 +01:00
* /
private boolean deleteItem ( FileModel fileTarget ) {
Record record = treePanel . getStore ( ) . getRecord ( fileTarget ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( record ! = null ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel item = ( FileModel ) record . getModel ( ) ;
treePanel . getStore ( ) . remove ( item ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return true ;
} else
System . out . println ( " Record Error: file target with "
+ fileTarget . getIdentifier ( )
+ " identifier not exist in store " ) ;
return false ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the item .
*
* @param parentId the parent id
* @param child the child
* @param bool the bool
* /
2013-02-06 15:40:17 +01:00
public void addItem ( String parentId , FileModel child , boolean bool ) {
FileModel parent = getFileModelByIdentifier ( parentId ) ;
if ( parent ! = null )
addItem ( parent , child , bool ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Adds the item .
*
* @param parent the parent
* @param child the child
* @param bool the bool
* /
2013-02-06 15:40:17 +01:00
private void addItem ( FileModel parent , FileModel child , boolean bool ) {
2016-08-29 15:39:13 +02:00
store . add ( parent , child , bool ) ;
2013-02-06 15:40:17 +01:00
}
/ * *
2016-08-29 15:39:13 +02:00
* Sets the expand tree level .
*
* @param parent the parent
2013-02-06 15:40:17 +01:00
* @param bool expand true / false
* /
private void setExpandTreeLevel ( FileModel parent , boolean bool ) {
2015-10-05 18:33:14 +02:00
treePanel . setExpanded ( parent , bool ) ;
2013-06-10 16:34:52 +02:00
}
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
/ * *
2016-08-29 15:39:13 +02:00
* Checks if is expanded .
*
* @param identifier the identifier
* @return true , if is expanded
2013-06-10 16:34:52 +02:00
* /
public boolean isExpanded ( String identifier ) {
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
if ( identifier = = null )
return false ;
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
if ( fileTarget = = null )
return false ;
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
return treePanel . isExpanded ( fileTarget ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the expand tree level .
*
* @param identifier the identifier
* @param bool the bool
* /
2013-02-06 15:40:17 +01:00
public void setExpandTreeLevel ( String identifier , boolean bool ) {
FileModel item = getFileModelByIdentifier ( identifier ) ;
if ( item ! = null )
2016-08-29 15:39:13 +02:00
treePanel . setExpanded ( item , bool ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
2013-06-10 16:34:52 +02:00
/ * *
2016-08-29 15:39:13 +02:00
* Select item .
*
* @param identifier the identifier
* @return true , if successful
2013-06-10 16:34:52 +02:00
* /
2013-02-06 15:40:17 +01:00
public boolean selectItem ( String identifier ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
if ( fileTarget ! = null ) {
treePanel . getSelectionModel ( ) . select ( fileTarget , true ) ; //Select the item
return true ;
}
return false ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Re select item .
*
* @param identifier the identifier
* @return true , if successful
* /
2013-02-06 15:40:17 +01:00
public boolean reSelectItem ( String identifier ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
if ( fileTarget ! = null ) {
treePanel . getSelectionModel ( ) . deselect ( fileTarget ) ;
treePanel . getSelectionModel ( ) . select ( fileTarget , true ) ; //Select the item
return true ;
}
return false ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Select item .
*
* @param fileTarget the file target
* @return true , if successful
* /
2013-02-06 15:40:17 +01:00
@SuppressWarnings ( " unused " )
private boolean selectItem ( FileModel fileTarget ) {
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
if ( fileTarget ! = null ) {
treePanel . getSelectionModel ( ) . select ( fileTarget , true ) ; //Select the item
return true ;
}
return false ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Checks if is sub tree loaded .
*
* @return true , if is sub tree loaded
* /
2013-02-06 15:40:17 +01:00
public boolean isSubTreeLoaded ( ) {
return isSubTreeLoaded ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the sub tree loaded .
*
* @param isSubTreeLoaded the new sub tree loaded
* /
2013-02-06 15:40:17 +01:00
public void setSubTreeLoaded ( boolean isSubTreeLoaded ) {
this . isSubTreeLoaded = isSubTreeLoaded ;
}
2016-08-29 15:39:13 +02:00
2014-01-15 12:49:40 +01:00
/ * *
2016-08-29 15:39:13 +02:00
* Select root by default .
2014-01-15 12:49:40 +01:00
* /
2013-02-06 15:40:17 +01:00
public void removeAllAndRecoveryRoot ( ) {
store . removeAll ( ) ;
2016-08-29 15:39:13 +02:00
loadRootItem ( scopeId , true ) ;
2013-02-06 15:40:17 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Removes the all and recovery root .
*
* @param selectRoot the select root
* /
2014-01-15 12:49:40 +01:00
public void removeAllAndRecoveryRoot ( boolean selectRoot ) {
store . removeAll ( ) ;
2016-08-29 15:39:13 +02:00
loadRootItem ( scopeId , selectRoot ) ;
2014-01-15 12:49:40 +01:00
}
2016-08-29 15:39:13 +02:00
/ * *
* Select root item .
* /
2013-02-06 15:40:17 +01:00
public void selectRootItem ( ) {
FileModel selectedItem = treePanel . getSelectionModel ( ) . getSelectedItem ( ) ;
if ( selectedItem ! = null )
treePanel . getSelectionModel ( ) . deselect ( selectedItem ) ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
treePanel . getSelectionModel ( ) . select ( store . getRootItems ( ) . get ( 0 ) , true ) ; //select root item
}
2016-08-29 15:39:13 +02:00
/ * *
* Deselect item .
*
* @param identifier the identifier
* /
2013-02-06 15:40:17 +01:00
public void deselectItem ( String identifier ) {
FileModel fileTarget = getFileModelByIdentifier ( identifier ) ;
if ( fileTarget ! = null )
treePanel . getSelectionModel ( ) . deselect ( fileTarget ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Deselect item .
*
* @param fileTarget the file target
* /
2013-02-06 15:40:17 +01:00
public void deselectItem ( FileModel fileTarget ) {
if ( fileTarget ! = null )
treePanel . getSelectionModel ( ) . deselect ( fileTarget ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Gets the selected file model item .
*
* @return the selected file model item
* /
2013-02-06 15:40:17 +01:00
public FileModel getSelectedFileModelItem ( ) {
FileModel selectedItem = treePanel . getSelectionModel ( ) . getSelectedItem ( ) ;
if ( selectedItem ! = null )
return selectedItem ;
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
return store . getRootItems ( ) . get ( 0 ) ; //return root item
}
2016-08-29 15:39:13 +02:00
/ * *
* Checks if is search .
*
* @return true , if is search
* /
2013-02-06 15:40:17 +01:00
public boolean isSearch ( ) {
return isSearch ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the search .
*
* @param isSearch the new search
* /
2013-02-06 15:40:17 +01:00
public void setSearch ( boolean isSearch ) {
System . out . println ( " ***Set Search: " + isSearch ) ;
this . isSearch = isSearch ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the size tree panel .
*
* @param width the width
* @param height the height
* /
2013-02-06 15:40:17 +01:00
public void setSizeTreePanel ( int width , int height ) {
treePanel . setSize ( width , height ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Gets the context menu tree .
*
* @return the context menu tree
* /
2013-02-06 15:40:17 +01:00
public ContextMenuTree getContextMenuTree ( ) {
return contextMenuTree ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Sets the header tree visible .
*
* @param bool the new header tree visible
* /
2013-02-06 15:40:17 +01:00
public void setHeaderTreeVisible ( boolean bool ) {
cp . setHeaderVisible ( bool ) ;
}
2016-08-29 15:39:13 +02:00
/ * *
* Gets the root item .
*
* @return the root item
* /
2013-02-06 15:40:17 +01:00
public FileModel getRootItem ( ) {
return treePanel . getStore ( ) . getRootItems ( ) . get ( 0 ) ;
}
2016-08-29 15:39:13 +02:00
2013-02-06 15:40:17 +01:00
}