Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 package com.generalrobotix.ui.view.graph;
00011
00012 import org.eclipse.swt.widgets.Composite;
00013 import java.awt.*;
00014 import java.awt.event.*;
00015 import java.awt.datatransfer.*;
00016 import java.awt.dnd.*;
00017
00024 public class DroppableXYGraph
00025 extends XYLineGraph
00026 implements DropTargetListener
00027 {
00028 private Object droppedObject_;
00029 DropTarget dropTarget_;
00030 ActionListener actionListener_;
00031
00032 boolean dropSucceeded_;
00033
00034
00035
00044 public DroppableXYGraph(
00045 Composite parent,
00046 int leftMargin,
00047 int rightMargin,
00048 int topMargin,
00049 int bottomMargin
00050 ) {
00051 super(parent, leftMargin, rightMargin, topMargin, bottomMargin);
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 droppedObject_ = null;
00062 dropSucceeded_ = true;
00063 }
00064
00065
00066
00072 public void setDropActive(
00073 boolean active
00074 ) {
00075 dropTarget_.setActive(active);
00076 }
00077
00083 public Object getDroppedObject() {
00084 return droppedObject_;
00085 }
00086
00087 public void setDropSucceeded(boolean flag) {
00088 dropSucceeded_ = flag;
00089 }
00090
00091
00092
00093 public void addActionListener(ActionListener listener) {
00094 actionListener_ = AWTEventMulticaster.add(actionListener_, listener);
00095 }
00096 public void removeActionListener(ActionListener listener) {
00097 actionListener_ = AWTEventMulticaster.remove(actionListener_, listener);
00098 }
00099
00100
00101
00107 public void drop(DropTargetDropEvent evt) {
00108 if (
00109 evt.isDataFlavorSupported(AttributeInfo.dataFlavor)
00110 && (
00111 evt.getDropAction()
00112 & DnDConstants.ACTION_COPY_OR_MOVE
00113 ) != 0
00114 ) {
00115 evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
00116 try {
00117 Transferable tr = evt.getTransferable();
00118 if (tr.isDataFlavorSupported(AttributeInfo.dataFlavor)){
00119 droppedObject_ = tr.getTransferData(AttributeInfo.dataFlavor);
00120 if(actionListener_ != null) {
00121 actionListener_.actionPerformed(
00122 new ActionEvent(
00123 this,
00124 ActionEvent.ACTION_PERFORMED,
00125 "Dropped"
00126 )
00127 );
00128 }
00129 evt.dropComplete(dropSucceeded_);
00130 } else {
00131 System.err.println("サポートしないフレーバ");
00132 evt.dropComplete(false);
00133 }
00134 } catch (Exception ex) {
00135 ex.printStackTrace();
00136 System.err.println("ドロップ失敗");
00137 evt.dropComplete(false);
00138 }
00139 } {
00140 evt.rejectDrop();
00141 evt.dropComplete(false);
00142 }
00143 }
00144
00150 public void dragEnter(DropTargetDragEvent evt) {
00151 if (
00152 evt.isDataFlavorSupported(AttributeInfo.dataFlavor)
00153 && (evt.getSourceActions() & DnDConstants.ACTION_COPY_OR_MOVE) != 0
00154 ) {
00155 evt.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
00156 } else {
00157 evt.rejectDrag();
00158 }
00159 }
00160
00161 public void dragExit(DropTargetEvent evt) {}
00162 public void dragOver(DropTargetDragEvent evt) {}
00163 public void dropActionChanged(DropTargetDragEvent evt) {}
00164 }