SWT Dropposition bestimmbar ?

S91sPlayer

Mitglied
Hallo
ich habe mal wieder eine Frage zu Drag and Drop.

Ich habe mein Code nach diesem Beispiel aufgebaut und funktioniert soweit auch gut :

DND in SWT

In diesem Beispiel wird das zu droppende Element an die Mauszeigerpostion angehängt.
Kann man dies beeinflussen?
Ich würde gern das zu droppende Element in die nächste Zeile packen, ist dies überhaupt möglich ?
Beim DropTarget handelt es sich um ein SourceViewer.
Google und Co konnten mir bisher nicht weiterhelfen.

Vielen Dank für jede Antwort

LG S91sPlayer
 

S91sPlayer

Mitglied
So da dies anscheinend nicht möglich ist, habe ich dies jetzt auf einem anderen Weg versucht und wieder über ein Problem gestolpert. Immer wenn das DropEvent ausgeführt wird soll ein automatischer Zeilenumbruch ausgeführt werden. Dies geschieht aber nicht. Eine neue Zeile wird erzeugt der Cursor springt aber nicht mit in die neue Zeile.

Hier mal etwas Code:

Java:
public void drop( DropTargetEvent event ){
    String  zeilenUmbruch = System.getPorperty( "line.separator" );
    styledText.insert( zeilenUmbruch );
    //...

Ich habe es auch schon versucht mit :

Java:
styledText.insert( " \n" );

Jedoch geschieht hier genau das selbe. Weiß wer also, wie ich es schaffe das der Cursor mitspringt und nicht einfach nur eine neue Zeile erstellt wird ?

Lg S91sPlayer
 
G

Gast2

Gast
Bei solchen Problemen solltest du ein KSKB posten, dann kann dir schneller geholfen werden.
 

S91sPlayer

Mitglied
Euch ein komplierbares Beispiel zu liefern würde ich gern machen, jedoch ist das Programm in dem dieser Mechanismus integriert wurde sehr komplex und wäre so nicht komplilierbar ich versuche es nocheinmal so:

Wenn das Problem immer noch nicht identifizierbar ist, sagt es und ich setzt mich gern nochmal ran und erstellt ein kompilierbares Beispiel.


Ok ich post mal die hier relevante Stelle:

Java:
//...
public void drop( DropTargetEvent event ){
   if( TextTransfer.getInstance().isSupportedType( event.currentDataType )){
      DropTarget droptarget = ( DropTarget ) event.widget;
      dropTarget.getControl();
      String data = ( String ) event.data;
      styledText.insert( "\n" + data );
      }
   }
//...

So das ist die Stelle an der gedroppt und eingefügt wird.
Mein Problem liegt darin das beim Droppen der Textcursor nicht mitbewegt wird, sodass folgendes passiert:

Das wäre zu erwarten und ist erwünscht:

1.Objekt
2.Objekt
3.Objekt|<Textcursor an der Stelle

Jedoch passiert folgendes:
|< Textcursor an der Stelle
3.Objekt
2.Objekt
1.Objekt

Der Textcursor bewegt sich also überhaupt nicht. Hat wer ne Idee wie ich den Textcursor mitverschieben kann?

Vielen Dank für eure Bemühungen

Lg S91sPlayer
 
Zuletzt bearbeitet:

Ariol

Top Contributor
Klappt das?
Java:
//...
public void drop( DropTargetEvent event ){
   if( TextTransfer.getInstance().isSupportedType( event.currentDataType )){
      DropTarget droptarget = ( DropTarget ) event.widget;
      dropTarget.getControl();
      String data = "\n" + ( String ) event.data;
      int position = styledText.getCaretOffset();
      styledText.insert(data);
      styledText.setCaretOffset(position + data.length);
      }
   }
//...

EDIT: Frage nicht/falsch verstanden...Ich seh's mir nochmal an...
 
Zuletzt bearbeitet:

Ariol

Top Contributor
Also, dass aus dem letzten Post kannst du verwenden.
zusätzlich brauchst du einen MouseMoveListener, der dir den CaretOffset setzt.

Den Offset bekommst du über
Code:
getOffsetAtLocation(Point)
 

S91sPlayer

Mitglied
Genau so soll es passieren, funktioniert jetzt einwandfrei, der MouseMoveListener ist glücklicherweise schon implementiert gewesen :applaus:

Ich danke dir vielmals!

Wenn ich mir die Lösung jetzt anschaue frage ich mich,
warum ich selbst nicht darauf gekommen bin :lol:

Nochmals vielen herzlichen Dank !!!

Lg S91sPlayer
 

Neue Themen


Oben