Changeset 7486
- Timestamp:
- 05/06/08 09:04:14 (5 years ago)
- Location:
- ossiedev/branches/jsnyder/ComponentProject/src/edu/vt/ossie/editors
- Files:
-
- 1 added
- 2 modified
-
OWDEditor.java (modified) (13 diffs)
-
ResourceTransfer.java (added)
-
ResourceTreeViewer.java (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ossiedev/branches/jsnyder/ComponentProject/src/edu/vt/ossie/editors/OWDEditor.java
r7482 r7486 25 25 import org.eclipse.ui.part.FileEditorInput; 26 26 import org.eclipse.jface.action.Action; 27 import org.eclipse.jface.action.IMenuListener;28 27 import org.eclipse.jface.action.IMenuManager; 29 28 import org.eclipse.jface.action.IStatusLineManager; … … 35 34 import org.eclipse.jface.operation.IRunnableWithProgress; 36 35 import org.eclipse.jface.resource.ImageDescriptor; 37 import org.eclipse.jface.viewers.CellEditor;38 import org.eclipse.jface.viewers.ColumnViewerEditor;39 import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;40 import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;41 36 import org.eclipse.jface.viewers.DoubleClickEvent; 42 import org.eclipse.jface.viewers.ICellModifier;43 37 import org.eclipse.jface.viewers.IDoubleClickListener; 44 38 import org.eclipse.jface.viewers.ISelectionChangedListener; 45 39 import org.eclipse.jface.viewers.IStructuredSelection; 46 40 import org.eclipse.jface.viewers.TreeViewer; 47 import org.eclipse.jface.viewers.TreeViewerEditor;48 41 import org.eclipse.swt.SWT; 49 42 import org.eclipse.swt.custom.ScrolledComposite; 50 import org.eclipse.swt.dnd.DND;51 import org.eclipse.swt.dnd.DragSourceEvent;52 import org.eclipse.swt.dnd.DragSourceListener;53 43 import org.eclipse.swt.dnd.DropTargetEvent; 54 import org.eclipse.swt.dnd.DropTargetListener;55 import org.eclipse.swt.dnd.TextTransfer;56 import org.eclipse.swt.dnd.Transfer;57 44 import org.eclipse.swt.events.FocusEvent; 58 45 import org.eclipse.swt.events.FocusListener; … … 67 54 import org.eclipse.swt.widgets.TreeItem; 68 55 import org.python.core.Py; 69 import org.python.core.PyList;70 56 import edu.vt.ossie.OWDPlugin; 71 57 import edu.vt.ossie.dialogs.ConnectDialog; 72 58 import edu.vt.ossie.jyinterface.interfaces.MainFrame; 73 59 import edu.vt.ossie.wavedev.*; 60 import edu.vt.ossie.wavedev.treemodel.ITreeNode; 74 61 import edu.vt.ossie.wavedev.treemodel.ContentProvider; 75 import edu.vt.ossie.wavedev.treemodel.ITreeNode;76 62 import edu.vt.ossie.wavedev.treemodel.LabelProvider; 77 63 … … 707 693 data.minimumWidth = 200; 708 694 resourcesTree.setLayoutData(data); 709 resourcesTreeViewer = new ResourceTreeViewer(resourcesTree); 695 resourcesTreeViewer = new ResourceTreeViewer( 696 resourcesTree, ResourceTransfer.ResourceData.RESOURCE_TREE); 710 697 resourcesTreeViewer.setAutoExpandLevel(2); 711 698 resourcesTree.addFocusListener(this); … … 831 818 data.minimumWidth = 200; 832 819 waveformTree.setLayoutData(data); 833 waveformTreeViewer = new ResourceTreeViewer(waveformTree); 820 waveformTreeViewer = new ResourceTreeViewer( 821 waveformTree, ResourceTransfer.ResourceData.WAVEFORM_TREE); 834 822 waveformTree.addFocusListener(this); 835 823 836 824 // Turn on name decorations in the tree 837 ((LabelProvider) resourcesTreeViewer.getLabelProvider())825 ((LabelProvider)waveformTreeViewer.getLabelProvider()) 838 826 .setShowDecoratedNames(true); 839 827 … … 914 902 915 903 904 // Add drag-and-drop support for inserting into waveform/platform 905 906 waveformTreeViewer.addDragSupport(null); 907 908 916 909 // Add drag-and-drop support for adding components from resources 917 910 … … 947 940 { 948 941 getActiveWaveform().addNewComponent(toAdd, after); 949 refreshWaveform();950 942 return true; 951 943 } … … 965 957 data.minimumWidth = 200; 966 958 platformTree.setLayoutData(data); 967 platformTreeViewer = new ResourceTreeViewer(platformTree); 959 platformTreeViewer = new ResourceTreeViewer( 960 platformTree, ResourceTransfer.ResourceData.PLATFORM_TREE); 968 961 platformTreeViewer.setAutoExpandLevel(2); 969 962 platformTree.addFocusListener(this); … … 996 989 // Add edit support for node and device names 997 990 998 platformTreeViewer.addNameEditSupport(null, dirtySetter); 991 platformTreeViewer.addNameEditSupport(null, 992 new ResourceTreeViewer.SetDirty() 993 { 994 // ---------------------------------------------------------- 995 public void setIsDirty(boolean isDirty) 996 { 997 waveformTreeViewer.refresh(); 998 OWDEditor.this.setIsDirty(isDirty); 999 } 1000 }); 1001 1002 1003 // Add drag-and-drop support for moving components between devices 1004 1005 platformTreeViewer.addDragSupport(new ResourceTreeViewer.AllowAction() 1006 { 1007 // ---------------------------------------------------------- 1008 @Override 1009 public boolean allowAction(PyWrapper object) 1010 { 1011 return object instanceof Component 1012 && !((Component)object).isDevice(); 1013 } 1014 }); 999 1015 1000 1016 … … 1014 1030 } 1015 1031 }, 1016 new ResourceTreeViewer.SetDirty() 1017 { 1018 public void setIsDirty(boolean isDirty) 1019 { 1020 refreshPlatform(); 1021 OWDEditor.this.setIsDirty(isDirty); 1022 } 1023 } 1024 ) 1032 dirtySetter) 1025 1033 { 1026 1034 // ---------------------------------------------------------- 1027 1035 public boolean drop(DropTargetEvent event, ITreeNode onNode) 1036 { 1037 ResourceTransfer.ResourceData data = 1038 (ResourceTransfer.ResourceData)event.data; 1039 if (data.tree == resourcesTreeViewer.treeId()) 1040 { 1041 return dropNewResource(event, onNode); 1042 } 1043 else // if (data.tree == waveformTreeViewer.treeId()) 1044 { 1045 return dropComponentAssignment(event, onNode); 1046 } 1047 } 1048 1049 // ---------------------------------------------------------- 1050 public boolean dropComponentAssignment( 1051 DropTargetEvent event, ITreeNode onNode) 1052 { 1053 ResourceTreeViewer sourceViewer = viewerSource(event); 1054 ITreeNode droppedNode = 1055 getDroppedNode(event, sourceViewer); 1056 droppedNode = 1057 nearestEnclosingNode(Component.class, droppedNode); 1058 if (droppedNode == null) return false; 1059 1060 onNode = 1061 nearestEnclosingNode(Component.class, onNode); 1062 while (onNode != null 1063 && !((Component)onNode.data()).isDevice()) 1064 { 1065 onNode = 1066 nearestEnclosingNode(Component.class, onNode); 1067 } 1068 if (onNode == null) return false; 1069 1070 Component c = (Component)droppedNode.data(); 1071 Component oldDevice = c.getDevice(); 1072 Component newDevice = (Component)onNode.data(); 1073 c.assignToDevice(newDevice); 1074 sourceViewer.update(droppedNode, null); 1075 if (sourceViewer != waveformTreeViewer) 1076 { 1077 waveformTreeViewer.update(((ContentProvider) 1078 waveformTreeViewer.getContentProvider()) 1079 .findNodeByData(c), null); 1080 } 1081 viewer().refresh(onNode); 1082 viewer().expandToLevel(onNode, 1); 1083 if (oldDevice != null) 1084 { 1085 ITreeNode oldNode = ((ContentProvider)viewer() 1086 .getContentProvider()).findNodeByData(oldDevice); 1087 if (oldNode != null) 1088 { 1089 viewer().refresh(oldNode); 1090 } 1091 } 1092 return true; 1093 } 1094 1095 // ---------------------------------------------------------- 1096 public boolean dropNewResource( 1097 DropTargetEvent event, ITreeNode onNode) 1028 1098 { 1029 1099 ITreeNode droppedNode = … … 1035 1105 getActivePlatform().addNewNode( 1036 1106 (Node)droppedNode.data(), after); 1107 refreshPlatform(); 1037 1108 return true; 1038 1109 } … … 1046 1117 ? null 1047 1118 : (Component)afterNode.data(); 1048 Node nodeForDevice = nearestEnclosingObject(Node.class, 1119 ITreeNode nodeForDevice = nearestEnclosingNode( 1120 Node.class, 1049 1121 afterNode == null ? onNode : afterNode); 1050 1122 if (nodeForDevice == null) return false; 1051 1123 1052 nodeForDevice.addNewDevice(device, after); 1124 Node theNode = (Node)nodeForDevice.data(); 1125 log.debug("before add: " + theNode.getDevices()); 1126 theNode.addNewDevice(device, after); 1127 log.debug("after add: " + theNode.getDevices()); 1128 viewer().refresh(nodeForDevice); 1053 1129 return true; 1054 1130 } … … 1140 1216 { 1141 1217 log.error("openComponentInEditor()", e); 1218 } 1219 } 1220 1221 1222 // ---------------------------------------------------------- 1223 private ResourceTreeViewer viewerSource(DropTargetEvent e) 1224 { 1225 return viewerFromId(((ResourceTransfer.ResourceData)e.data).tree); 1226 } 1227 1228 1229 // ---------------------------------------------------------- 1230 private ResourceTreeViewer viewerFromId(int treeId) 1231 { 1232 if (treeId == waveformTreeViewer.treeId()) 1233 { 1234 return waveformTreeViewer; 1235 } 1236 else if (treeId == platformTreeViewer.treeId()) 1237 { 1238 return platformTreeViewer; 1239 } 1240 else 1241 { 1242 return resourcesTreeViewer; 1142 1243 } 1143 1244 } -
ossiedev/branches/jsnyder/ComponentProject/src/edu/vt/ossie/editors/ResourceTreeViewer.java
r7482 r7486 10 10 import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy; 11 11 import org.eclipse.jface.viewers.DoubleClickEvent; 12 import org.eclipse.jface.viewers.IBaseLabelProvider;13 12 import org.eclipse.jface.viewers.ICellModifier; 14 import org.eclipse.jface.viewers.IContentProvider;15 13 import org.eclipse.jface.viewers.IDoubleClickListener; 16 14 import org.eclipse.jface.viewers.IStructuredSelection; … … 19 17 import org.eclipse.swt.dnd.DND; 20 18 import org.eclipse.swt.dnd.DragSourceEvent; 21 import org.eclipse.swt.dnd.DragSourceListener;22 19 import org.eclipse.swt.dnd.DropTargetEvent; 23 import org.eclipse.swt.dnd.DropTargetListener;24 20 import org.eclipse.swt.dnd.TextTransfer; 25 21 import org.eclipse.swt.dnd.Transfer; 26 import org.eclipse.swt.widgets.Composite;27 22 import org.eclipse.swt.widgets.Tree; 28 23 import org.eclipse.swt.widgets.TreeItem; 29 import org.python.core.PyList;30 24 import edu.vt.ossie.OWDPlugin; 31 import edu.vt.ossie.wavedev.Component;32 import edu.vt.ossie.wavedev.MainFrameTreeNode;33 25 import edu.vt.ossie.wavedev.NamedObject; 34 import edu.vt.ossie.wavedev.Node;35 import edu.vt.ossie.wavedev.Port;36 26 import edu.vt.ossie.wavedev.PyWrapper; 37 27 import edu.vt.ossie.wavedev.treemodel.ContentProvider; … … 54 44 55 45 // ---------------------------------------------------------- 56 public ResourceTreeViewer(Tree tree )46 public ResourceTreeViewer(Tree tree, int treeId) 57 47 { 58 48 super(tree); 49 this.treeId = treeId; 59 50 setContentProvider(new ContentProvider()); 60 51 setLabelProvider(new LabelProvider()); … … 63 54 64 55 //~ Public Methods ........................................................ 56 57 // ---------------------------------------------------------- 58 public int treeId() 59 { 60 return treeId; 61 } 62 65 63 66 64 // ---------------------------------------------------------- … … 75 73 addDragSupport( 76 74 DND.DROP_COPY | DND.DROP_DEFAULT, 77 new Transfer[] { TextTransfer.getInstance()},78 new DragSourceListener(filter, null ));75 new Transfer[] {ResourceTransfer.getInstance()}, 76 new DragSourceListener(filter, null, treeId)); 79 77 } 80 78 … … 91 89 addDropSupport( 92 90 DND.DROP_COPY | DND.DROP_DEFAULT, 93 new Transfer[] { TextTransfer.getInstance()},91 new Transfer[] {ResourceTransfer.getInstance()}, 94 92 listener); 95 93 } … … 232 230 233 231 // ---------------------------------------------------------- 234 public DragSourceListener() 235 { 236 this(null, null); 237 } 238 239 240 // ---------------------------------------------------------- 241 public DragSourceListener(AllowAction allower, SetDirty setter) 232 public DragSourceListener(int treeId) 233 { 234 this(null, null, treeId); 235 } 236 237 238 // ---------------------------------------------------------- 239 public DragSourceListener( 240 AllowAction allower, SetDirty setter, int treeId) 242 241 { 243 242 allowAction = allower; 244 243 dirtySetter = setter; 244 this.treeId = treeId; 245 245 } 246 246 … … 290 290 public void dragSetData(DragSourceEvent event) 291 291 { 292 if ( TextTransfer.getInstance().isSupportedType(292 if (ResourceTransfer.getInstance().isSupportedType( 293 293 event.dataType)) 294 294 { … … 299 299 ITreeNode node = 300 300 (ITreeNode)selection.getFirstElement(); 301 event.data = node.getName(); 301 ResourceTransfer.ResourceData data = 302 new ResourceTransfer.ResourceData(); 303 data.name = node.getName(); 304 data.tree = treeId; 305 event.data = data; 302 306 } 303 307 } … … 318 322 protected AllowAction allowAction; 319 323 protected SetDirty dirtySetter; 324 protected int treeId; 320 325 } 321 326 … … 491 496 } 492 497 } 493 for (int i = 0; i < event.dataTypes.length; i++)494 {495 if (TextTransfer.getInstance().isSupportedType(496 event.dataTypes[i]))497 {498 event.currentDataType = event.dataTypes[i];499 break;500 }501 }502 498 if (event.detail != DND.DROP_COPY) 503 499 { … … 549 545 DropTargetEvent event, ResourceTreeViewer source) 550 546 { 551 String name = (String)event.data; 547 ResourceTransfer.ResourceData data = 548 (ResourceTransfer.ResourceData)event.data; 552 549 return ((ContentProvider) 553 550 source.getContentProvider()) 554 .findNodeByName( name);551 .findNodeByName(data.name); 555 552 } 556 553 … … 594 591 public void drop(DropTargetEvent event) 595 592 { 596 if ( TextTransfer.getInstance().isSupportedType(593 if (ResourceTransfer.getInstance().isSupportedType( 597 594 event.currentDataType)) 598 595 { … … 619 616 public void dropAccept(DropTargetEvent event) 620 617 { 621 if (allowAction != null )618 if (allowAction != null && event.item != null) 622 619 { 623 620 TreeItem item = (TreeItem)event.item; … … 640 637 //~ Instance/static variables ............................................. 641 638 639 private int treeId; 640 642 641 private static final Logger log = 643 642 OWDPlugin.getLogManager().getLogger(ResourceTreeViewer.class);