Ενέργειες εναπόθεσης

org.eclipse.ui.dropActions

Αυτό το σημείο επέκτασης χρησιμοποιείται για την προσθήκη συμπεριφορών εναπόθεσης σε προβολές που καθορίζονται από άλλες πρόσθετες λειτουργίες.

Λόγω της διαστρωμάτωσης του περιβάλλοντος χρήστη που επιβάλλει ο μηχανισμός πρόσθετης λειτουργίας, οι προβολές συχνά δεν γνωρίζουν το περιεχόμενο και τη φύση άλλων προβολών. Αυτό μπορεί να καταστήσει δύσκολες τις λειτουργίες τραβήγματος και εναπόθεσης μεταξύ πρόσθετων λειτουργιών. Για παράδειγμα, όταν κάποιος θέλει να παράσχει υποστήριξη βελτιστοποίησης δομής Java ενώ ο χρήστης τραβά μια μέθοδο από τη λειτουργία διάρθρωσης περιεχομένου της λειτουργίας επεξεργασίας Java σε άλλο αρχείο java στη λειτουργία πλοήγησης πόρων. Εφόσον η λειτουργία πλοήγησης πόρων δεν γνωρίζει τίποτα για το περιεχόμενο Java, δεν γνωρίζει πώς να συμπεριφερθεί όταν εναποτίθενται σε αυτή μέθοδοι java. Ομοίως, ένα ISV μπορεί να θέλει να εναποθέσει μέρος του περιεχομένου του σε μία από τις λειτουργίες προβολής Java.

Το σημείο επέκτασης org.eclipse.ui.dropActions παρέχεται από την πλατφόρμα για την αντιμετώπιση τέτοιων καταστάσεων. Αυτός ο μηχανισμός αναθέτει τη συμπεριφορά εναπόθεσης πίσω στον εντολέα της λειτουργίας τραβήγματος. Αυτή η συμπεριφορά περιέχεται σε μια ενέργεια που πρέπει να υλοποιεί org.eclipse.ui.part.IDropActionDelegate. Η λειτουργία προβολής που είναι η προέλευση της λειτουργίας τραβήγματος πρέπει να υποστηρίζει το είδος μεταβίβασης org.eclipse.ui.part.PluginTransfer και να τοποθετεί ένα αντικείμενο PluginTransferData στο συμβάν τραβήγματος. Δείτε org.eclipse.jface.viewers.StructuredViewer#addDragSupport για να μάθετε πώς προστίθεται υποστήριξη τραβήγματος σε μια λειτουργία προβολής.

<!ELEMENT extension (action*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT action EMPTY>

<!ATTLIST action

id    CDATA #REQUIRED

class CDATA #REQUIRED>


Ακολουθεί ένα παράδειγμα επέκτασης ενέργειας εναπόθεσης:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Ακολουθεί παράδειγμα μια λειτουργία ακρόασης τραβήγματος που κάνει χρήση της ενέργειας εναπόθεσης που ορίζεται παραπάνω.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//enter the data to be sent. 
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

Για ένα πιο πλήρες παράδειγμα, δείτε αυτό του αρχείου readme πλατφόρμας. Στο παράδειγμα αυτό, μια ενέργεια εναπόθεσης ορίζεται στη ReadmeDropActionDelegate και χρησιμοποιείται από τη ReadmeContentOutlineDragListener.

Η τιμή του γνωρίσματος κλάσης πρέπει να είναι ένα πλήρες όνομα μιας κλάσης Java που υλοποιεί org.eclipse.ui.part.IDropActionDelegate. Αυτή η κλάση φορτώνεται όσο το δυνατόν αργότερα για την αποφυγή φόρτωσης ολόκληρης της πρόσθετης λειτουργίας προτού αυτή καταστεί αναγκαία

Ο πάγκος εργασίας δεν παρέχει υλοποίηση για αυτό το σημείο επέκτασης. Οι πρόσθετες λειτουργίες μπορούν να συνεισφέρουν σε αυτό το σημείο επέκτασης για την προσθήκη συμπεριφοράς εναπόθεσης σε προβολές από άλλες πρόσθετες λειτουργίες.