@Override
	public boolean canImport(TransferHandler.TransferSupport info)
	{
		GlobalLogger.getLogger().logp(Level.FINE, this.getClass().getName(),
				"canImport(TransferSupport)", "Can import called.");
		if (!info.isDrop())
		{
			return false;
		}

		// Check for Task flavor
		if (!info.isDataFlavorSupported(new DataFlavor(Task.class, "Task")))
		{
			return false;
		}

		Point dropPoint = info.getDropLocation().getDropPoint();

		if (info.getComponent() instanceof CalendarPanel)
		{
			CalendarPanel p = (CalendarPanel) (info.getComponent());
			Date date = p.getDateForPoint(dropPoint);

			if (date == null)
			{
				// If this was invalid in any way, return false
				return false;
			}
			else
			{
				// Check if there are any Tasks or Events that are under the
				// current drop location
				Transferable t = info.getTransferable();
				Task taskRef;
				try
				{
					taskRef = (Task) t.getTransferData(new DataFlavor(
							Task.class, "Task"));
				}
				catch (Exception e)
				{
					return false;
				}

				if (taskRef instanceof Task)
				{
					Date newTime = p.getDateForPoint(dropPoint);

					// Create a temporary Task to represent where the current
					// one would be dropped
					Task temp = (Task) taskRef;
					PlaceholderScheduleable hold = new PlaceholderScheduleable(
							temp.getName(), newTime, new Date(newTime.getTime()
									+ temp.getDuration()));

					if (p.conflictingScheduleableExists(hold))
					{
						return false;
					}
				}
				return true;
			}
		}
		else
		{
			return false;
		}
	}