Class ShapeSet3DInt

All Implemented Interfaces:
java.awt.datatransfer.Transferable, java.lang.Comparable<InterfaceShape>, AttributeListener, AttributeObject, InterfaceGraphicListener, InterfaceObject, PersistentObject, VariableObject, PopupMenuObject, NamedObject, InterfaceQueryObject, InterfaceShapeQueryObject, ShapeSet, ShapeListener, VertexDataColumnListener, InterfaceTransferable, TreeObject, CleanableObject, XMLObject, IconObject, org.jogamp.java3d.GeometryUpdater

public class ShapeSet3DInt
extends Shape3DInt
implements ShapeSet, InterfaceGraphicListener
Represents a set of Shape3DInt objects. This class is itself a descendant of Shape3DInt, which means it inherits much of its behaviour and attributes, and can be added to another ShapeSet3DInt. Shapes added to a shape set inherit its spatial unit; thus, all shapes in a set must be defined in the same unit.

See Development Notes: Shape Sets for a more detailed description.

TODO: Also implement and enforce set-wide coordinate systems

Since:
1.0
Version:
1.0
Author:
Andrew Reid
  • Field Details

    • members

      public java.util.ArrayList<Shape3DInt> members
    • sharedNode

      public org.jogamp.java3d.SharedGroup sharedNode
    • registered_cameras

      protected java.util.ArrayList<Camera3D> registered_cameras
    • model

      public ShapeModel3D model
    • sections_node

      protected org.jogamp.java3d.BranchGroup sections_node
    • section_polygons

      protected java.util.HashMap<InterfaceGraphic2D,​Polygon3DInt> section_polygons
    • last_section_added

      protected InterfaceGraphic2D last_section_added
    • last_section_removed

      protected InterfaceGraphic2D last_section_removed
  • Constructor Details

    • ShapeSet3DInt

      public ShapeSet3DInt()
    • ShapeSet3DInt

      public ShapeSet3DInt​(java.lang.String name)
  • Method Details

    • setIcon

      protected void setIcon()
      Overrides:
      setIcon in class Shape3DInt
    • init

      protected void init()
      Overrides:
      init in class Shape3DInt
    • getLastSectionAdded

      public InterfaceGraphic2D getLastSectionAdded()
    • getLastSectionRemoved

      public InterfaceGraphic2D getLastSectionRemoved()
    • getMembers

      public java.util.ArrayList<InterfaceShape> getMembers()
      Returns a copy of this set's member list.
      Specified by:
      getMembers in interface ShapeSet
      Returns:
      a list of members
    • getMembers

      public java.util.ArrayList<InterfaceShape> getMembers​(boolean recursive)
      Returns a copy of this set's member list.
      Parameters:
      recursive - If true, returns all subset members as well
      Returns:
      a list of members
    • getLastAdded

      public InterfaceShape getLastAdded()
      Specified by:
      getLastAdded in interface ShapeSet
    • getLastRemoved

      public InterfaceShape getLastRemoved()
      Specified by:
      getLastRemoved in interface ShapeSet
    • getLastInserted

      public InterfaceShape getLastInserted()
      Specified by:
      getLastInserted in interface ShapeSet
    • getLastInsert

      public int getLastInsert()
      Specified by:
      getLastInsert in interface ShapeSet
    • getLastModified

      public InterfaceShape getLastModified()
      Specified by:
      getLastModified in interface ShapeSet
    • getLastMoved

      public InterfaceShape getLastMoved()
      Specified by:
      getLastMoved in interface ShapeSet
    • getIndexOf

      public int getIndexOf​(InterfaceShape shape)
      Returns the index of shape in this set.
      Specified by:
      getIndexOf in interface ShapeSet
      Returns:
      index of shape, or -1 if it is not in this set
    • setOverride

      public void setOverride​(AttributeList attr)
      If attr is non-null, sets override attributes for all members of this set, and sets isOverridden to true.
      Overrides:
      setOverride in class InterfaceShape
      Parameters:
      attr - AttributeList with which to override the members of this set
    • unsetOverride

      public void unsetOverride()
      Unsets the override on this set. If this set is overriding, itself, this override will be reapplied to its members.
      Overrides:
      unsetOverride in class InterfaceShape
    • setModel

      public void setModel​(ShapeModel3D m)
      Sets this shape set's current model. This is only necessary for a top-level shape set (i.e., the model's base set). Any members, including other instances of ShapeSet3DInt, will access this model through the getModel() method.

      TODO: reconsider the access modifier for this method; setting models should possibly be restricted to internal processes.

      Parameters:
      model_node - The model to set as this set's parent
    • setModel

      public void setModel​(ShapeModel3D model, boolean setID)
      Sets this shape set's current model. This is only necessary for a top-level shape set (i.e., the model's base set). Any members, including other instances of ShapeSet3DInt, will access this model through the getModel() method.

      TODO: reconsider the access modifier for this method; setting models should possibly be restricted to internal processes.

      Parameters:
      model - The model to set as this set's parent
      setID - Whether to set a shape ID for this shape
    • register

      public void register()
      Description copied from class: InterfaceShape
      Registers this shape with the current session, if it hasn't already been done, by assigning it a unique identifier.
      Overrides:
      register in class InterfaceShape
    • applyOverride

      public void applyOverride()
      Applies this set's attributes to all members.
    • removeOverride

      public void removeOverride()
      Removes this set's override; all members are rendered according to their own attributes.
    • isOverriding

      public boolean isOverriding()
      Query whether this set is currently overriding its members' attributes.
      Returns:
      true if this set is overriding
    • getShape2D

      protected Shape2DInt getShape2D​(Plane3D plane, float above_dist, float below_dist, org.jogamp.vecmath.Matrix4d transform)
      Description copied from class: Shape3DInt
      To be overridden by subclasses implementing a 2D representation
      Overrides:
      getShape2D in class Shape3DInt
      Parameters:
      plane - Plane on which to render
      above_dist - Distance above plane within which to project a shape
      below_dist - Distance below plane within which to project a shape
      Returns:
    • getShape2DInt

      public Shape2DInt getShape2DInt​(Plane3D plane, float above_dist, float below_dist, boolean listen)
      Description copied from class: Shape3DInt
      Determines a 2D shape which is the projection of this 3D shape onto plane, within the projection limits defined by above_dist and below_dist.
      Overrides:
      getShape2DInt in class Shape3DInt
      above_dist - The projection limit above the plane
    • registerCamera

      public void registerCamera​(Camera3D c)
    • registerCameras

      public void registerCameras​(java.util.ArrayList<Camera3D> cameras)
    • deregisterCameras

      public void deregisterCameras​(java.util.ArrayList<Camera3D> cameras)
    • deregisterCamera

      public void deregisterCamera​(Camera3D c)
    • isVisible

      public boolean isVisible​(int i)
      Determines whether the ith member of this set is visible
      Parameters:
      i -
      Returns:
    • getSize

      public int getSize()
      Description copied from interface: ShapeSet
      Returns the number of shapes in this set
      Specified by:
      getSize in interface ShapeSet
      Returns:
    • getMember

      public Shape3DInt getMember​(int i)
      Returns the ith member of this set
      Parameters:
      i -
      Returns:
    • getShape

      public Shape3DInt getShape​(int i)
      Returns the ith member of this set
      Parameters:
      i -
      Returns:
    • getShapeSet

      public java.util.Set<InterfaceShape> getShapeSet()
      Specified by:
      getShapeSet in interface ShapeSet
    • getSubSets

      public java.util.Set<ShapeSet> getSubSets()
      Specified by:
      getSubSets in interface ShapeSet
    • hasShape

      public boolean hasShape​(java.lang.String name)
      Determines whether a shape with the name name is in this set. Does a recursive search of all subsets.
      Parameters:
      name -
      Returns:
    • hasShape

      public boolean hasShape​(java.lang.String name, boolean recurse)
      Determines whether a shape with the name name is in this set.
      Parameters:
      name -
      recurse - Whether to do a recursive search of all subsets.
      Returns:
    • getShape

      public Shape3DInt getShape​(java.lang.String name)
      Searches this set for a shape named name and returns the first instance found. Does not search subsets; see {code getShape(String name, boolean recurse)}.
      Parameters:
      name -
      Returns:
    • getShape

      public Shape3DInt getShape​(java.lang.String name, boolean recurse)
      Searches this set for a shape named name and returns the first instance found. Recurse indicates that all subsets should also be searched.
      Parameters:
      name -
      recurse -
      Returns:
    • mergeWithSet

      public void mergeWithSet​(ShapeSet3DInt set)
      Merge set with this set. Merge of subordinate sets is done recursively. Shapes are renamed if shapes already exist by the same name.
      Parameters:
      set -
    • mergeWithSet

      public void mergeWithSet​(ShapeSet3DInt set, java.lang.String existing_shapes)
      Merge set with this set. Merge of subordinate sets is done recursively.
      Parameters:
      set - Set to merge with this one
      existing_shapes - If a shape in this set has the same name as one being merged, do we rename it ("rename"), skip it ("skip"), or replace it ("overwrite")?
    • mergeWithSet

      public void mergeWithSet​(ShapeSet3DInt set, java.lang.String existing_shapes, boolean update)
      Merge set with this set. Merge of subordinate sets is done recursively.
      Parameters:
      set - Set to merge with this one
      existing_shapes - If a shape in this set has the same name as one being merged, do we rename it ("rename"), skip it ("skip"), or replace it ("overwrite")?
    • getUniqueName

      protected java.lang.String getUniqueName​(java.lang.String name)
      Finds a unique name by iteratively adding numbers to the end of name.
      Parameters:
      name -
      Returns:
    • hasShape

      public boolean hasShape​(InterfaceShape s)
      Determines whether shape is in this set. Does a recursive search of all subsets.
      Specified by:
      hasShape in interface ShapeSet
      Parameters:
      shape3d -
      Returns:
    • hasShape

      public boolean hasShape​(InterfaceShape shape, boolean recurse)
      Determines whether shape is in this set.
      Specified by:
      hasShape in interface ShapeSet
      Parameters:
      shape -
      recurse - Whether to also search all subsets recursively
      Returns:
    • addShape

      public boolean addShape​(InterfaceShape shape)
      Adds shape to this set, updates it, and fires this set's listeners.
      Specified by:
      addShape in interface ShapeSet
      Parameters:
      shape -
      Returns:
    • addShape

      public boolean addShape​(Shape3DInt thisShape, boolean update)
      Adds shape to this set.
      Parameters:
      shape3d -
      update - Whether to update this shape and fire its listeners
      Returns:
    • addShape

      public boolean addShape​(Shape3DInt thisShape, int index, boolean update)
      Adds shape to this set at index.
      Parameters:
      shape3d -
      update - Whether to update this shape and fire its listeners
      Returns:
    • addShape

      public boolean addShape​(Shape3DInt shape, boolean updateShape, boolean updateListeners)
      Adds shape to this set.
      Parameters:
      shape -
      updateShape - Whether to update this shape
      updateListeners - Whether to fire this set's listeners
      Returns:
    • validateName

      protected java.lang.String validateName​(java.lang.String name)
    • validateName

      protected java.lang.String validateName​(java.lang.String name, java.lang.String base, int i)
      Returns a name that doesn't conflict with existing member names, by adding an integer to the end.
      Parameters:
      name -
      Returns:
    • addShape

      public boolean addShape​(Shape3DInt shape, int index, boolean updateShape, boolean updateListeners)
      Adds shape to this shape set. If updateShape is true, performs updates on the shape, sets this set as its parent set and registers itself as a shape listener on shape, registers camera listeners, and generates a Java3D node. If updateListeners is true, fires this shape set's listeners with a ShapeAdded ShapeEvent.

      It is not recommended to set these arguments to false unless you are using this set to perform non-GUI-related tasks.

      Parameters:
      shape - The shape to add
      index - The index at which to insert the shape
      updateShape - Specifies whether to perform shape updates
      updateListeners - Specifies whether to fire shape listeners
      Returns:
      true if successful
    • updateNewShape

      protected ShapeSceneNode updateNewShape​(Shape3DInt shape)
    • moveShapeUp

      public boolean moveShapeUp​(Shape3DInt shape)
      Moves shape up one in the rendering order
      Parameters:
      shape -
      Returns:
      true if shape has been moved
    • moveShapeDown

      public boolean moveShapeDown​(Shape3DInt shape)
      Moves shape down one in the rendering order
      Parameters:
      shape -
      Returns:
    • moveShapeTop

      public boolean moveShapeTop​(Shape3DInt shape)
      Moves shape to the top of the rendering order
      Parameters:
      shape -
      Returns:
    • moveShapeBottom

      public boolean moveShapeBottom​(Shape3DInt shape)
      Moves shape to the bottom of the rendering order
      Parameters:
      shape -
      Returns:
    • moveShapeBefore

      public boolean moveShapeBefore​(InterfaceShape inserted_shape, InterfaceShape target_shape)
      Description copied from interface: ShapeSet
      Moves the order of shape to the spot before target.
      Specified by:
      moveShapeBefore in interface ShapeSet
      Returns:
    • moveShapeBefore

      public boolean moveShapeBefore​(Shape3DInt moved_shape, Shape3DInt target_shape, boolean update)
      Inserts inserted_shape at a position before target_shape in this list. Both shapes must already be in this set. To add a new shape at a specific position, use addShape(mgui.interfaces.shapes.InterfaceShape).
      Parameters:
      inserted_shape -
      target_shape -
      update -
      Returns:
    • moveShapeAfter

      public boolean moveShapeAfter​(InterfaceShape inserted_shape, InterfaceShape target_shape)
    • moveShapeAfter

      public boolean moveShapeAfter​(Shape3DInt moved_shape, Shape3DInt target_shape, boolean update)
      Inserts inserted_shape at a position after target_shape in this list. Both shapes must already be in this set. To add a new shape at a specific position, use addShape(mgui.interfaces.shapes.InterfaceShape).
      Parameters:
      inserted_shape -
      target_shape -
      update -
      Returns:
    • isAncestorSet

      public boolean isAncestorSet​(ShapeSet set)
      Determines whether set is an ancestor of this set.
      Specified by:
      isAncestorSet in interface ShapeSet
      Parameters:
      set -
      Returns:
    • addShapes

      public void addShapes​(java.util.ArrayList<Shape3DInt> shapes)
    • addShapes

      public void addShapes​(java.util.ArrayList<Shape3DInt> shapes, boolean update, boolean listeners)
      Add multiple shapes to this set. Use this instead of multiple calls to addShape, as it will only update itself once all shapes are added, rather once for every shape.
      Parameters:
      shapes -
      update -
      listeners -
    • getModel

      public ShapeModel3D getModel()
      Specified by:
      getModel in interface ShapeSet
      Overrides:
      getModel in class InterfaceShape
    • fireShapeListeners

      protected void fireShapeListeners​(ShapeEvent e)
      Overrides:
      fireShapeListeners in class Shape3DInt
    • removeShape

      public void removeShape​(InterfaceShape shape)
      Removes shape from this shape set and removes it as a parent set and a shape listener. Updates this set's bounds and fires this set's shape listeners with a ShapeRemoved ShapeEvent.
      Specified by:
      removeShape in interface ShapeSet
      Parameters:
      shape - The shape to remove
    • removeShape

      public void removeShape​(Shape3DInt shape, boolean updateShape, boolean updateListeners)
      Deprecated.
      Remove update arguments
      Removes shape from this shape set and removes it as a parent set and a shape listener. If updateShape is true, updates this set's bounds. If updateListeners is true, fires this set's shape listeners with a ShapeRemoved ShapeEvent.

      It is not recommended to set these arguments to false unless you are using this set to perform non-GUI-related tasks.

      Parameters:
      shape - The shape to remove
      updateShape - Specifies whether to update this set's bounds
      updateListeners - Specifies whether to fire this set's shape listeners
    • updateTreeNodes

      public void updateTreeNodes()
      Overrides:
      updateTreeNodes in class AbstractInterfaceObject
    • removeShape2D

      public void removeShape2D​(Shape2DInt shape, boolean updateShape, boolean updateListeners)
    • destroy

      public void destroy()
      Description copied from interface: InterfaceObject
      Destroy this object (prepare it to be removed from memory)
      Specified by:
      destroy in interface InterfaceObject
      Specified by:
      destroy in interface ShapeListener
      Overrides:
      destroy in class Shape3DInt
    • drawMember

      public void drawMember​(int index, java.awt.Graphics2D g, DrawingEngine d)
    • drawShape

      public void drawShape​(java.awt.Graphics2D g, DrawingEngine d)
    • setSuperTreeNode

      protected void setSuperTreeNode​(InterfaceTreeNode treeNode)
    • setTreeNode

      public void setTreeNode​(InterfaceTreeNode treeNode)
      Constructs a tree node from this shape. Adds an AttributeTreeNode via the super method, and also adds a node to display the vertex-wise data columns associated with this ShapeInt.
      Specified by:
      setTreeNode in interface TreeObject
      Overrides:
      setTreeNode in class InterfaceShape
      Parameters:
      treeNode - node to construct
    • needsRedraw3D

      public boolean needsRedraw3D​(Attribute a)
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class Shape3DInt
    • shapeUpdated

      public void shapeUpdated​(ShapeEvent e)
      Responds to a change in a member shape. Typically this involves calling updateShape() to update this set's bounds and center point.
      Specified by:
      shapeUpdated in interface ShapeListener
      Parameters:
      e - a ShapeEvent characterizing the change
    • attributeUpdated

      public void attributeUpdated​(AttributeEvent e)
      Description copied from class: Shape3DInt
      Responds to an update in one of this shape's attributes.

      Subclasses should override and call this super method AFTER handling the attribute change appropriately. Subclasses should also override needsRedraw() to indicate whether the scene node should be regenerated.

      Specified by:
      attributeUpdated in interface AttributeListener
      Overrides:
      attributeUpdated in class Shape3DInt
      Parameters:
      e - an AttributeEvent specifying which attribute has been changed
    • addUnionSet

      public int addUnionSet​(ShapeSet3DInt thisSet, boolean update)
    • addUnionSet

      public int addUnionSet​(ShapeSet3DInt thisSet, boolean updateShapes, boolean updateListeners)
    • getScene3DObject

      public org.jogamp.java3d.BranchGroup getScene3DObject​(ShapeSelectionSet selSet)
      Overrides:
      getScene3DObject in class Shape3DInt
    • setBoundBoxNode

      public void setBoundBoxNode()
      Description copied from class: Shape3DInt
      Sets a bounding box node for this ShapeInt, that can be retrieved using Shape3DInt.getBoundBoxNode().

      TODO: reconsider the access modifier of this method; probably doesn't need to be public

      Overrides:
      setBoundBoxNode in class Shape3DInt
    • hasWindow

      public boolean hasWindow​(InterfaceGraphic2D window)
    • addWindow

      public boolean addWindow​(InterfaceGraphic2D window)
    • removeWindow

      public void removeWindow​(InterfaceGraphic2D window)
    • graphicSourceChanged

      public void graphicSourceChanged​(GraphicEvent e)
      Specified by:
      graphicSourceChanged in interface InterfaceGraphicListener
    • graphicUpdated

      public void graphicUpdated​(GraphicEvent e)
      Specified by:
      graphicUpdated in interface InterfaceGraphicListener
    • clearWindows

      public void clearWindows()
    • getSectionWindows

      public java.util.ArrayList<InterfaceGraphic2D> getSectionWindows()
    • updateSectionNodes

      public void updateSectionNodes()
      Updates all existing section nodes.
    • setSectionNode

      protected void setSectionNode​(InterfaceGraphic2D window)
      Updates or creates the section node for this window. If it doesn't already exist, it is created; otherwise it is modified to match the current state of the window.
      Parameters:
      window -
    • activateClip

      public void activateClip​(org.jogamp.java3d.ModelClip clip)
      Adds this model to the scopes of the current clip nodes
    • showSections

      public boolean showSections()
    • destroySectionNode

      protected void destroySectionNode​(InterfaceGraphic2D window)
    • setSectionNodes

      public void setSectionNodes()
    • setScene3DObject

      public void setScene3DObject​(boolean make_live)
      Description copied from class: Shape3DInt
      Sets this ShapeInt's Java3D scene node from its current geometry and rendering attributes. This node should be retrieved using the Shape3DInt.getShapeSceneNode() method. A scene node will only created if one of these conditions is met:
      • The shape is auxiliary (i.e., not a model shape, but a helper shape such as a section polygon)
      • The shape is associated with a ShapeModel3D, and this model is live (is associated with at least one Java3D scene graph).
      Subclasses which call this super method should always check that a scene node has indeed been created.
      Overrides:
      setScene3DObject in class Shape3DInt
    • setScene3DObject

      public void setScene3DObject​(boolean make_live, ShapeSelectionSet filter)
    • setScene3DObject

      public void setScene3DObject​(boolean make_live, ShapeSelectionSet filter, boolean super_only)
    • get3DShapes

      public java.util.ArrayList<Shape3DInt> get3DShapes​(boolean recurse)
      Returns all 3D shapes in this shape set; if recurse is false, limits this list to the set's members; otherwise, also adds all members of all subsets (along with the sets themselves).
      Parameters:
      recurse -
      Returns:
    • getShapeType

      public java.util.List<Shape3DInt> getShapeType​(Shape3DInt thisShape)
    • getShapeType

      public java.util.List<Shape3DInt> getShapeType​(Shape3DInt thisShape, boolean recurse)
    • getCenterPoint

      public org.jogamp.vecmath.Point3f getCenterPoint()
      Returns the center point of this shape set. This can be updated by calling updateShape.
      Returns:
    • updateMembers

      public void updateMembers()
      Calling this function causes all members to update themselves by calling updateShape.
    • updateShape

      public void updateShape()
      Description copied from class: Shape3DInt
      Updates the geometric bounds of this ShapeInt. Does not call Shape3DInt.setScene3DObject().
      Overrides:
      updateShape in class Shape3DInt
    • updateCameras

      protected void updateCameras()
    • getShapeCount

      public int getShapeCount()
    • getVertices

      public java.util.ArrayList<org.jogamp.vecmath.Point3f> getVertices()
      Returns a list of all nodes of all members in this set, including all shapes in all subsets. To get a list of only the shapes in this immediate set, use getNodes(false).
      Overrides:
      getVertices in class Shape3DInt
      Returns:
      a list of nodes
    • getNodes

      protected java.util.ArrayList<org.jogamp.vecmath.Point3f> getNodes​(boolean recurse)
      Returns a list of all nodes of all members in this set. If recurse is true, also includes all subsets.
      Parameters:
      recurse - Specifies whether to include all shapes in all subsets
      Returns:
      a list of nodes
    • isShape

      public boolean isShape()
    • setParentWindow

      public void setParentWindow​(InterfaceGraphic<?> thisParent)
    • getLocalName

      public java.lang.String getLocalName()
      Description copied from interface: XMLObject
      Returns the local name associated with this XML object.
      Specified by:
      getLocalName in interface XMLObject
      Overrides:
      getLocalName in class Shape3DInt
      Returns:
    • getXML

      public java.lang.String getXML​(int tab, XMLObject.XMLType type)
      Overrides:
      getXML in class InterfaceShape
    • getByReferenceUrls

      public java.util.List<java.lang.String> getByReferenceUrls()
      Returns a list of URL strings for the latest call to writeXML(int,java.io.Writer,mgui.io.standard.xml.XMLOutputOptions,mgui.interfaces.ProgressUpdater). Is an empty list if no call has yet been made, or the latest write contained no by reference shapes.
      Overrides:
      getByReferenceUrls in class InterfaceShape
      Returns:
    • writeXML

      public void writeXML​(int tab, java.io.Writer writer, XMLOutputOptions options, ProgressUpdater progress_bar) throws java.io.IOException
      Description copied from interface: XMLObject
      Writes the XML representation of this object to file. The basic contract for this method is that it should not write a newline character at its start or end. The default format of XMLFormat.Ascii will be used.
      Specified by:
      writeXML in interface XMLObject
      Overrides:
      writeXML in class InterfaceShape
      Parameters:
      tab - The number of tabs to place before the XML text
      writer - The writer
      options - XMLOutputOptions defining the write parameters
      progress_bar - Optional progress updater (may be null)
      Throws:
      java.io.IOException
    • getPopupMenu

      public InterfacePopupMenu getPopupMenu()
      Description copied from interface: PopupMenuObject
      Produces and returns a popup menu for this object.
      Specified by:
      getPopupMenu in interface PopupMenuObject
      Overrides:
      getPopupMenu in class InterfaceShape
      Returns:
    • handlePopupEvent

      public void handlePopupEvent​(java.awt.event.ActionEvent e)
      Description copied from interface: PopupMenuObject
      Handles an event on this object's popup menu.
      Specified by:
      handlePopupEvent in interface PopupMenuObject
      Overrides:
      handlePopupEvent in class Shape3DInt
    • isDataFlavorSupported

      public boolean isDataFlavorSupported​(java.awt.datatransfer.DataFlavor flavor)
      Specified by:
      isDataFlavorSupported in interface java.awt.datatransfer.Transferable
      Overrides:
      isDataFlavorSupported in class Shape3DInt
    • getTransferDataFlavors

      public java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
      Specified by:
      getTransferDataFlavors in interface java.awt.datatransfer.Transferable
      Overrides:
      getTransferDataFlavors in class Shape3DInt
    • performTransfer

      public boolean performTransfer​(javax.swing.TransferHandler.TransferSupport support)
      Description copied from class: Shape3DInt
      Moves a list of shapes to a position above this shape in its parent set. Does nothing if this shape does not have a parent set.
      Specified by:
      performTransfer in interface InterfaceTransferable
      Overrides:
      performTransfer in class Shape3DInt
      Returns:
      true if successful.