swt分割栏

来源:互联网 发布:apache cxf maven 编辑:程序博客网 时间:2024/05/10 00:04
 

package tests.views;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.part.ViewPart;

public class SampleView extends ViewPart {

 public static final String XDEVICE_ID = "tests.views.SampleView";
 public static TreeItem fileItem = null;
 public static TreeItem tmssItem = null;

 public SampleView() {
 }

 @Override
 public void createPartControl(Composite parent) {
//  Composite composite = new Composite(parent, SWT.NONE);
//  composite.setLayoutData(new GridData(1, 1, true, false));
//  composite.setLayout(new FillLayout(SWT.VERTICAL));
  
  SashForm sashForm = new SashForm(parent, SWT.VERTICAL|SWT.SMOOTH);
//  sashForm.setLayoutData(new GridData(2, 1, true, false));
//  sashForm.setLayout(new FillLayout(SWT.VERTICAL));

  Group upGroup = new Group(sashForm, SWT.NONE);
//  upGroup.setLayoutData(new GridData(1, 1, true, true));
  upGroup.setLayout(new FillLayout());

  // tmss树
  final Tree upTree = new Tree(upGroup, SWT.SINGLE);
  tmssItem = new TreeItem(upTree, SWT.NONE);
  tmssItem.setText("Test Tmss Manager");
  new TreeItem(tmssItem, SWT.NULL).setText("tmsskey1");
  new TreeItem(tmssItem, SWT.NULL).setText("tmsskey2");
  new TreeItem(tmssItem, SWT.NULL).setText("tmsskey3");
  new TreeItem(tmssItem, SWT.NULL).setText("tmsskey4");
  

  // 本地文件
  Group downGroup = new Group(sashForm, SWT.NONE);
//  downGroup.setLayoutData(new GridData(1, 1, true, true));
  downGroup.setLayout(new FillLayout());
//  
  
  final Tree downTree = new Tree(downGroup, SWT.SINGLE);
  fileItem = new TreeItem(downTree, SWT.NONE);
  fileItem.setText("Test File Manager");
  new TreeItem(fileItem, SWT.NULL).setText("key1");
  new TreeItem(fileItem, SWT.NULL).setText("key2");
  new TreeItem(fileItem, SWT.NULL).setText("key3");
  new TreeItem(fileItem, SWT.NULL).setText("key4");

  // 定义拖放源对象
  DragSource dragSource = new DragSource(downTree, DND.DROP_MOVE
    | DND.DROP_COPY);

  // 设置传输的数据为文本型String类型
  dragSource.setTransfer(new Transfer[] { TextTransfer.getInstance() });
  // 注册拖放源时的事件处理
  dragSource.addDragListener(new DragSourceListener() {
   public void dragStart(DragSourceEvent event) {
    if (downTree.getSelectionCount() == 0)
     event.doit = false;
   }

   public void dragSetData(DragSourceEvent event) {
    if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
     event.data = downTree.getSelection()[0].getText(0);
     fileItem = downTree.getSelection()[0];
    }
   }

   public void dragFinished(DragSourceEvent event) {
   }
  });
  // 定义拖放目标对象
  DropTarget dropTarget = new DropTarget(upTree, DND.DROP_MOVE
    | DND.DROP_DEFAULT | DND.DROP_COPY);
  // 设置目标对象可传输的数据类型
  dropTarget.setTransfer(new Transfer[] { TextTransfer.getInstance() });
  // 注册目标对象的事件处理
  dropTarget.addDropListener(new DropTargetListener() {
   public void dragEnter(DropTargetEvent event) {
    if (event.detail == DND.DROP_DEFAULT)
     event.detail = DND.DROP_COPY;
   }

   public void dragOperationChanged(DropTargetEvent event) {
    if (event.detail == DND.DROP_DEFAULT)
     event.detail = DND.DROP_COPY;
   }

   public void dragOver(DropTargetEvent event) {
    event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SELECT;
   }

   // 当松开鼠标时触发的事件
   public void drop(DropTargetEvent event) {
    if (event.item == null)
     return;
    // 首先获得目标对象中拖拽的树节点
    TreeItem eventItem = (TreeItem) event.item;
//    if(fileItem.getText().equals("Test File Manager"))return ;
      
    if (TextTransfer.getInstance().isSupportedType(
      event.currentDataType)) {
     // 获得数据源设置的字符串
     String s = (String) event.data;
     // 在tmss位置插入一个节点
//     if (eventItem.getParentItem() == null)
//      tmssItem = new TreeItem(eventItem.getParent(), SWT.NONE);
//     else
//      tmssItem = new TreeItem(eventItem.getParentItem(), SWT.NONE);
//     tmssItem.setText(s);
     
     tmssItem = new TreeItem(eventItem, SWT.NONE);
          tmssItem.setText(s);
            
          //得到当前选中的对象看是否有子节点
          TreeItem treeItem = downTree.getSelection()[0];
          if (treeItem.getItems().length != 0) {
           TreeItem[] downItems = treeItem.getItems();
           for(TreeItem item:downItems) {
            TreeItem newItem = new TreeItem(tmssItem, SWT.NONE);
            newItem.setText(item.getText());
           }
          }
         
     // 删除原来的节点
     if (downTree != null) {
      fileItem.dispose();
     }
    }
   }

   public void dragLeave(DropTargetEvent event) {
   }

   public void dropAccept(DropTargetEvent event) {
   }
  });


  // 对模块进行布局
//  GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP)
//    .grab(false, false).span(1, 1).applyTo(upGroup);
//  GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP)
//    .grab(false, false).span(1, 1).applyTo(downGroup);
//  sashForm.setWeights(new int[] {1, 1});


 }

 @Override
 public void setFocus() {
  // TODO Auto-generated method stub
 }

}

原创粉丝点击