@Override
	public boolean importData(TransferHandler.TransferSupport info)
	{
		JTable target = (JTable) info.getComponent();
		JTable.DropLocation dl = (JTable.DropLocation) info.getDropLocation();
		int index = dl.getRow();
		int max = this.table.getModel().getRowCount();
		if ((index < 0) || (index > max))
		{
			index = max;
		}
		target.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
		try
		{
			Integer rowFrom = (Integer) info.getTransferable().getTransferData(
					this.localObjectFlavor);
			if ((rowFrom != -1) && (rowFrom != index))
			{
				if (this.table instanceof Reorderable)
				{
					((Reorderable) this.table).reorder(rowFrom, index);
				}
				if (this.table.getModel() instanceof Reorderable)
				{
					((Reorderable) this.table.getModel()).reorder(rowFrom, index);
				}
				if (index > rowFrom)
				{
					index--;
				}
				target.getSelectionModel().addSelectionInterval(index, index);
				table.revalidate();
				table.repaint();
				return true;
			}
		}
		catch (UnsupportedFlavorException ufe)
		{
			// TODO Auto-generated catch block
			ufe.printStackTrace();
		}
		catch (IOException ioe)
		{
			// TODO Auto-generated catch block
			ioe.printStackTrace();
		}
		return false;
	}