@@ -163,38 +163,21 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
163163 this . setDraggable ( true ) ;
164164
165165 this . addListener ( "dragstart" , e => {
166- e . addAction ( "move" ) ;
167- e . addType ( "osparc-moveFolder" ) ;
168- e . addData ( "osparc-moveFolder" , {
169- "folderOrigin" : this . getFolder ( ) ,
170- } ) ;
171-
172- // make it semi transparent while being dragged
173- this . setOpacity ( 0.2 ) ;
174- // init drag indicator
175- const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
176- dragWidget . getChildControl ( "dragged-resource" ) . set ( {
177- label : this . getTitle ( ) ,
178- icon : "@FontAwesome5Solid/folder/16" ,
179- } ) ;
180- dragWidget . start ( ) ;
166+ const folderOrigin = this . getFolder ( ) ;
167+ osparc . dashboard . DragDropHelpers . moveFolder . dragStart ( e , folderOrigin , this ) ;
181168 } ) ;
182169
183170 this . addListener ( "dragend" , ( ) => {
184- // bring back opacity after drag
185- this . setOpacity ( 1 ) ;
186- // hide drag indicator
187- const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
188- dragWidget . end ( ) ;
171+ osparc . dashboard . DragDropHelpers . dragEnd ( this ) ;
189172 } ) ;
190173 } ,
191174
192175 __attachDropHandlers : function ( ) {
193176 this . setDroppable ( true ) ;
194177
195178 this . addListener ( "dragover" , e => {
196- let compatible = false ;
197179 if ( e . supportsType ( "osparc-moveStudy" ) ) {
180+ let compatible = false ;
198181 const studyData = e . getData ( "osparc-moveStudy" ) [ "studyDataOrigin" ] ;
199182 // Compatibility checks:
200183 // - My workspace
@@ -210,47 +193,27 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
210193 } else {
211194 compatible = true ;
212195 }
213- } else if ( e . supportsType ( "osparc-moveFolder" ) ) {
214- // Compatibility checks:
215- // - It's not the same folder
216- // - My workspace
217- // - None
218- // - Shared workspace
219- // - write access on workspace
220- const folderOrigin = e . getData ( "osparc-moveFolder" ) [ "folderOrigin" ] ;
221- compatible = this . getFolder ( ) !== folderOrigin ;
222- const workspaceId = folderOrigin . getWorkspaceId ( ) ;
223196 if ( compatible ) {
224- if ( workspaceId ) {
225- const workspace = osparc . store . Workspaces . getInstance ( ) . getWorkspace ( workspaceId ) ;
226- if ( workspace ) {
227- compatible = workspace . getMyAccessRights ( ) [ "write" ] ;
228- }
229- } else {
230- compatible = true ;
231- }
197+ this . getChildControl ( "icon" ) . setTextColor ( "strong-main" ) ;
198+ } else {
199+ this . getChildControl ( "icon" ) . setTextColor ( "danger-red" ) ;
200+ // do not allow
201+ e . preventDefault ( ) ;
232202 }
203+ const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
204+ dragWidget . setDropAllowed ( compatible ) ;
205+ } else if ( e . supportsType ( "osparc-moveFolder" ) ) {
206+ const folderDest = this . getFolder ( ) ;
207+ osparc . dashboard . DragDropHelpers . moveFolder . dragOver ( e , folderDest , this ) ;
233208 }
234- if ( compatible ) {
235- this . getChildControl ( "icon" ) . setTextColor ( "strong-main" ) ;
236- } else {
237- this . getChildControl ( "icon" ) . setTextColor ( "danger-red" ) ;
238- // do not allow
239- e . preventDefault ( ) ;
240- }
241- const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
242- dragWidget . setDropAllowed ( compatible ) ;
243209 } ) ;
244210
245211 this . addListener ( "dragleave" , ( ) => {
246- this . getChildControl ( "icon" ) . resetTextColor ( ) ;
247- const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
248- dragWidget . setDropAllowed ( false ) ;
212+ osparc . dashboard . DragDropHelpers . dragLeave ( this ) ;
249213 } ) ;
214+
250215 this . addListener ( "dragend" , ( ) => {
251- this . getChildControl ( "icon" ) . resetTextColor ( ) ;
252- const dragWidget = osparc . dashboard . DragWidget . getInstance ( ) ;
253- dragWidget . setDropAllowed ( false ) ;
216+ osparc . dashboard . DragDropHelpers . dragLeave ( this ) ;
254217 } ) ;
255218
256219 this . addListener ( "drop" , e => {
@@ -262,11 +225,8 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
262225 } ;
263226 this . fireDataEvent ( "studyToFolderRequested" , studyToFolderData ) ;
264227 } else if ( e . supportsType ( "osparc-moveFolder" ) ) {
265- const folderOrigin = e . getData ( "osparc-moveFolder" ) [ "folderOrigin" ] ;
266- const folderToFolderData = {
267- folderId : folderOrigin . getFolderId ( ) ,
268- destFolderId : this . getFolderId ( ) ,
269- } ;
228+ const folderDest = this . getFolder ( ) ;
229+ const folderToFolderData = osparc . dashboard . DragDropHelpers . moveFolder . drop ( e , folderDest ) ;
270230 this . fireDataEvent ( "folderToFolderRequested" , folderToFolderData ) ;
271231 }
272232 } ) ;
0 commit comments