/** * Copyright (c) 2010, 2012 Darmstadt University of Technology. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Patrick Gottschaemmer, Olav Lenz - add Drag'n'Drop support */ package org.eclipse.recommenders.internal.apidocs.rcp; import org.eclipse.recommenders.apidocs.rcp.ApidocProvider; import org.eclipse.recommenders.internal.apidocs.rcp.l10n.LogMessages; import org.eclipse.recommenders.utils.Logs; import org.eclipse.swt.dnd.ByteArrayTransfer; import org.eclipse.swt.dnd.TransferData; public final class DnDProviderTransfer extends ByteArrayTransfer { private static final String TYPE_NAME = "extdoc-provider-transfer-format"; //$NON-NLS-1$ private static final int TYPEID = registerType(TYPE_NAME); private static final DnDProviderTransfer INSTANCE = new DnDProviderTransfer(); private ApidocProvider extDocProvider; private DnDProviderTransfer() { }; public static DnDProviderTransfer getInstance() { return INSTANCE; } @Override protected int[] getTypeIds() { return new int[] { TYPEID }; } @Override protected String[] getTypeNames() { return new String[] { TYPE_NAME }; } @Override public void javaToNative(final Object object, final TransferData transferData) { final byte[] check = TYPE_NAME.getBytes(); super.javaToNative(check, transferData); } @Override public Object nativeToJava(final TransferData transferData) { final Object convert = super.nativeToJava(transferData); if (isInvalidNativeType(convert)) { Logs.log(LogMessages.ERROR_FAILED_TO_PERFORM_DRAG_AND_DROP); } return getExtdocProvider(); } private boolean isInvalidNativeType(final Object result) { return !(result instanceof byte[]) || !TYPE_NAME.equals(new String((byte[]) result)); } public ApidocProvider getExtdocProvider() { return extDocProvider; } public void setExtdocProvider(final ApidocProvider extDocProvider) { this.extDocProvider = extDocProvider; } }