이와 같은 테이블을 Editor로 만들었습니다. treeViewer에서 DB를 연결해서 테이블의 데이터를 테이블에
올려놓습니다. 소스 쪽과 타겟 쪽의 데이터를 다 올려 놓은후에 소스쪽의 데이터를 드래그해서 타겟쪽에
옮길려고 합니다... 예를들어 소스쪽에 컬럼명하나를 드래그해서 타겟쪽 Derivation에 드랍할려고합니다...
트리 드래그앤드랍 예제를 보고 따라해 봤는데... 안되네요 ㅜㅜ
대충 테이블은
table1 = new Table(top,SWT.BORDER|SWT.CHECK|SWT.H_SCROLL|SWT.V_SCROLL);
table1.setHeaderVisible(true);
table1.setLayoutData(gridData2);
table1.setLinesVisible(true);
TableColumn tableColumn3 = new TableColumn(table1, SWT.NONE);
tableColumn3.setWidth(30);
tableColumn3.setText(PK);
TableColumn tableColumn4 = new TableColumn(table1, SWT.NONE);
tableColumn4.setWidth(100);
tableColumn4.setText(Derivation);
TableColumn tableColumn5 = new TableColumn(table1, SWT.NONE);
tableColumn5.setWidth(80);
tableColumn5.setText(TCol_Name);
TableColumn tableColumn6 = new TableColumn(table1, SWT.NONE);
tableColumn6.setWidth(80);
tableColumn6.setText(TData_Type);
TableColumn tableColumn7 = new TableColumn(table1, SWT.NONE);
tableColumn7.setWidth(60);
tableColumn7.setText(Length);
createDragSource(table1);
createDropTarget(table1);
이렇게 구현했구요~ 이건 타겟쪽 드래그앤드랍 코딩은 다른 예제를 공부해서 이렇게 했습니다.private void setDragDrop(Table table)
{
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT;
DragSource source = new DragSource(table, operations);
//텍스트나 파일 형태의 데이터를 수락한다.
final TextTransfer textTransfer = TextTransfer.getInstance();
Transfer[] types = new Transfer[] {TextTransfer.getInstance()};
types = new Transfer[] {textTransfer};
source.setTransfer(types);
source.addDragListener(new DragSourceListener() {
public void dragStart(DragSourceEvent event) {
// 라벨(label)에 실제로 텍스트가 있을 때만 드래그를 시작한다.
// 이 텍스트가 타겟에 드롭될 것이다.
if (item.getText().length() == 0) {
event.doit = true;
}
}
public void dragSetData(DragSourceEvent event) {
// 요청된 타입의 데이터를 제공한다.
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
event.data = item.getText();
}
}
public void dragFinished(DragSourceEvent event) {
// 이동 동작이 수행된 것이라면,
// 소스의 데이터를 지워준다.
if (event.detail == DND.DROP_MOVE){
item.setText();
}
}
});
DropTarget target = new DropTarget(table1, operations);
types = new Transfer[] {textTransfer};
source.setTransfer(types);
target.addDropListener(new DropTargetListener() {
public void dragEnter(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
if ((event.operations & DND.DROP_COPY) != 0) {
 sp; event.detail = DND.DROP_COPY;
} else {
event.detail = DND.DROP_NONE;
}
}
// 텍스트나 파일을 수락한다.
}
public void dragOver(DropTargetEvent event) {
event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
if (textTransfer.isSupportedType(event.currentDataType)) {
// 알림: 지원하지 않는 플랫폼에서는 null이 리턴된다.
Object o = textTransfer.nativeToJava(event.currentDataType);
String t = (String)o;
if (t != null) System.out.println(t);
}
}
public void dragOperationChanged(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT) {
if ((event.operations & DND.DROP_COPY) != 0) {
event.detail = DND.DROP_COPY;
} else {
event.detail = DND.DROP_NONE;
}
}
}
public void dragLeave(DropTargetEvent event) {
}
public void dropAccept(DropTargetEvent event) {
}
public void drop(DropTargetEvent event) {
if (textTransfer.isSupportedType(event.currentDataType)) {
String text = (String)event.data;
TableItem item = new TableItem(talbe, SWT.NONE);
item.setText(text); }
}
});
}
어디가 잘못된건가요? 아예~ 스타트 쪽부터 컬럼의 아이템값들이 인식을 못합니다 ㅜㅜ 아 이런 코딩으로도 해봤어요
private void createDropTarget(final Table table1)
{
//createDragSource(table);
// createDropTarget(table);
// createDragSource(table1);
// createDropTarget(table1);
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
DropTarget dropTarget = new DropTarget(table1, DND.DROP_COPY);
dropTarget.setTransfer(types);
dropTarget.addDropListener(new DropTargetListener() {
public void dragEnter(DropTargetEvent event) {
}
public void dragLeave(DropTargetEvent event) {
}
public void dragOperationChanged(DropTargetEvent event) {
}
public void dragOver(DropTargetEvent event) {
}
public void drop(DropTargetEvent event) {
String data = (String) event.data;
table1.getData(data);
}
public void dropAccept(DropTargetEvent event) {
}
});
}
private void createDragSource(final Table table) {
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
DragSource dragSource = new DragSource(table, DND.DROP_COPY);
dragSource.setTransfer(types);
dragSource.addDragListener(new DragSourceListener() {
public void dragStart(DragSourceEvent event) {
if (((String) table.getData()).length() 0) {
event.doit = true;
}BRsp; }
}
public void dragSetData(DragSourceEvent event) {
event.data = table.getSelection();
}
public void dragFinished(DragSourceEvent event) {
//do nothing
}
});
}
도와주세용!!