private void setLabelDropTarget()
   {
      fieldLabel.setDropTarget(new DropTarget(this, new DropTargetListener()
      {
         private final DataFlavor entityFieldDataFlavor = new DataFlavor(EntityField.class,
                                                                         EntityField.class.getName());

         public void dragEnter(DropTargetDragEvent event)
         {
            if (!isDragAcceptable(event))
            {
               event.rejectDrag();
               return;
            }
         }

         public void dragExit(DropTargetEvent event){}

         public void dragOver(DropTargetDragEvent event){}

         public void dropActionChanged(DropTargetDragEvent event)
         {
            if (!isDragAcceptable(event))
            {
               event.rejectDrag();
               return;
            }
         }

         public void drop(DropTargetDropEvent event)
         {
            if (!isDropAcceptable(event))
            {
               event.rejectDrop();
               return;
            }

            event.acceptDrop(DnDConstants.ACTION_COPY);
            Transferable transferable = event.getTransferable();

            try
            {
               EntityField entityField = (EntityField) transferable.getTransferData(entityFieldDataFlavor);

               DiagramAbstractEntity deF = sqlDiagramViewPanel.getEntity(entityField.getTable());
               
               if (deF == null)
               {
                  //search for derived table 
                  deF = sqlDiagramViewPanel.getDerivedEntity(entityField.getTable());
               }
               DiagramFieldPanel dfF = deF.getField(entityField.getFieldName());

               DiagramFieldPanel dfP = (DiagramFieldPanel) event.getDropTargetContext().getDropTarget()
                     .getComponent().getParent();

               sqlDiagramViewPanel.join(dfP.diagramEntity, dfP, deF, dfF);

            }
            catch (Exception ex)
            {
               ex.printStackTrace();
            }

            event.dropComplete(true);
         }

         public boolean isDropAcceptable(DropTargetDropEvent event)
         {
            DataFlavor[] dataFlavors = event.getCurrentDataFlavors();

            for (int i = 0; i < dataFlavors.length; ++i)
            {
               DataFlavor dataFlavor = dataFlavors[i];
               if (dataFlavor.equals(entityFieldDataFlavor))
               {
                  return true;
               }
            }
            return false;
         }

         public boolean isDragAcceptable(DropTargetDragEvent event)
         {
            return event.getCurrentDataFlavorsAsList().contains(entityFieldDataFlavor);
         }
      }));
   }