Gesamte Form als DragSource

SegFault

Bekanntes Mitglied
Ich stelle in einer View den inhalt eines Objektes vom Typ Kunde dar. Die view dient als reine Nutzerinformation. Jetzt möchte ich für das gesamte Objekte den dnd Support aktivieren. Also wenn jemand irgendwo innerhalb der Form anfängt die maustaste gedrückt zu halten beginnt das DND. Aber irgendwie scheint das nicht zu gehen. Ich kann nicht den gesamten Formbody als DragSource angeben. Was muss ich ändern?

Hier mal der Code zum anlegen des ganzen:
Java:
DragSource ds = new DragSource(form.getBody(),DND.DROP_LINK);
		//draglabel = new Label(form.getBody(), SWT.NONE);
		ds.setTransfer(new Transfer[]{KundenTransfer.getInstance()});
		ds.addDragListener(new DragSourceListener()
		{

			@Override
			public void dragFinished(DragSourceEvent event) 
			{
				
			}

			@Override
			public void dragSetData(DragSourceEvent event) {
				System.out.println("check issupportedtype: " + event.dataType);
				if (KundenTransfer.getInstance().isSupportedType(event.dataType))
				{
					event.data = data;
				}
				
				
			}

			@Override
			public void dragStart(DragSourceEvent event) {
				System.out.println("dragstart");
				if (data==null || data.getDeleted())event.doit=false;			
			}
			
		});

Benutze ich das draglabel (Oben auskommentiert) als DragSource klappt alles. Aber wie schon gesagt es soll egal sein wo im Form der Drag&Drop Support beginnt. Nicht nur über einen bestimmten Steuerlelement.
 

SegFault

Bekanntes Mitglied
Gesamte Form geht wohl nicht, aber es funktioniert über den Header des Formulars. Würde sogar über das TabControl Funktionieren. Auf jedenfall klappt es so ähnlich wie ich mir das vorgestellt habe.
 
G

Gast2

Gast
Weclhen Header??
Ja ich wollte auch mal ein Composite draggen, aber irgenwie gehts das mit nem Composite nicht...
 
G

Gast2

Gast
Eigentlich müsstest du asl DragSource einfach nur dein parent mitgeben, dass du bei
Code:
public void createPartControl(Composite parent)
bekommst, dann sollte der ganze Editor als DragSource dienen.

Hier mal ein Bsp.
Java:
	@Override
	public void createPartControl(Composite parent) {
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 4;
		parent.setLayout(gridLayout);
		Text text = new Text(parent,SWT.BORDER);
		GridDataFactory.fillDefaults().align(1, 1).span(100, 100).applyTo(text);
		DragSource source = new DragSource(parent, DND.DROP_COPY);
		source.setTransfer(new Transfer[] { TextTransfer.getInstance() });
		source.addDragListener(new DragSourceAdapter() {
			public void dragSetData(DragSourceEvent event) {
				event.data = "test";
			}
		});
		
		
	}
 

SegFault

Bekanntes Mitglied
das hatte ich schon probiert, aber irgendwie ging das nicht. Ich hatte auch alle anderen Versionen versucht (eigenes Composite o.ä. erstellt). Bei mir ist es kein Editor sondern eine View welche als DragSource dienen soll. Aber ich glaube das sollte den ganzen keinen unterschied machen.

Zu der Rückfrage wegen den Header: Es gibt da eine Funktion für die swt Forms die es erlauben die Titelzeile des Forms als Dragsource zu verwenden.
 
G

Gast2

Gast
das hatte ich schon probiert, aber irgendwie ging das nicht. Ich hatte auch alle anderen Versionen versucht (eigenes Composite o.ä. erstellt). Bei mir ist es kein Editor sondern eine View welche als DragSource dienen soll. Aber ich glaube das sollte den ganzen keinen unterschied machen.

Zu der Rückfrage wegen den Header: Es gibt da eine Funktion für die swt Forms die es erlauben die Titelzeile des Forms als Dragsource zu verwenden.

Also bei mir klappt es in der View das composite, außer du hast noch etwas über die Composite gelegt welche sie komplett ausfüllt...
 

SegFault

Bekanntes Mitglied
prinzipiell erstelle ich immer mehrere Composites. Also eine Schachtelung wie: Hauptframe(Composite1(Label,Text....),Composite2(Text,Text,Text),.....,CompositeN(...));
Die Composites enthalten meist noch Sections etc. Ich probiers aber einfach nochmal aus.
P.S. ich verwende wie schon gesagt das FormToolkit, das liefert zwar auch SWT Componenten zurück aber ggf verbiegt es dennoch was an der Verhaltensweise.
 
G

Gast2

Gast
prinzipiell erstelle ich immer mehrere Composites. Also eine Schachtelung wie: Hauptframe(Composite1(Label,Text....),Composite2(Text,Text,Text),.....,CompositeN(...));
Die Composites enthalten meist noch Sections etc. Ich probiers aber einfach nochmal aus.
P.S. ich verwende wie schon gesagt das FormToolkit, das liefert zwar auch SWT Componenten zurück aber ggf verbiegt es dennoch was an der Verhaltensweise.

Du musst als DragSource immer die oberste Komponente die zur Verfügung ist angeben... Anders geht es nicht... Das können dann bei einem Editor oder View dann schon mal mehrer Widgets sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Form der Darstellung bei GEF Plattformprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben