/*******************************************************************************
* Copyright (c) 2009 EclipseSource and others. 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:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.swt.internal.dnd;
import org.eclipse.rwt.internal.service.ContextProvider;
import org.eclipse.rwt.internal.service.IServiceStateInfo;
import org.eclipse.swt.dnd.TransferData;
import org.eclipse.swt.widgets.Control;
public final class DNDAdapter implements IDNDAdapter {
private static final String CANCEL = DNDAdapter.class.getName() + "#cancel";
private static final String DETAIL_CHANGED_VALUE
= DNDAdapter.class.getName() + "#detailChangedValue";
private static final String DETAIL_CHANGED_CONTROL
= DNDAdapter.class.getName() + "#detailChangedControl";
private static final String FEEDBACK_CHANGED_VALUE
= DNDAdapter.class.getName() + "#feedbackChangedValue";
private static final String FEEDBACK_CHANGED_CONTROL
= DNDAdapter.class.getName() + "#feedbackChangedControl";
private static final String DATATYPE_CHANGED_VALUE
= DNDAdapter.class.getName() + "#dataTypeChangedValue";
private static final String DATATYPE_CHANGED_CONTROL
= DNDAdapter.class.getName() + "#dataTypeChangedControl";
public void cancel() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( CANCEL, Boolean.TRUE );
this.cancelDetailChanged();
this.cancelFeedbackChanged();
this.cancelDataTypeChanged();
}
public boolean isCanceled() {
return ContextProvider.getStateInfo().getAttribute( CANCEL ) != null;
}
public void setDetailChanged( final Control control, final int detail ) {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( DETAIL_CHANGED_VALUE, new Integer( detail ) );
stateInfo.setAttribute( DETAIL_CHANGED_CONTROL, control );
}
public void cancelDetailChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( DETAIL_CHANGED_VALUE, null );
stateInfo.setAttribute( DETAIL_CHANGED_CONTROL, null );
}
public boolean hasDetailChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
Object value = stateInfo.getAttribute( DETAIL_CHANGED_VALUE );
return value != null;
}
public int getDetailChangedValue() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
Integer value = ( Integer )stateInfo.getAttribute( DETAIL_CHANGED_VALUE );
return value.intValue();
}
public Control getDetailChangedControl() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
return ( Control )stateInfo.getAttribute( DETAIL_CHANGED_CONTROL );
}
public void setFeedbackChanged( final Control control, final int feedback ) {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( FEEDBACK_CHANGED_VALUE, new Integer( feedback ) );
stateInfo.setAttribute( FEEDBACK_CHANGED_CONTROL, control );
}
public void cancelFeedbackChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( FEEDBACK_CHANGED_VALUE, null );
stateInfo.setAttribute( FEEDBACK_CHANGED_CONTROL, null );
}
public boolean hasFeedbackChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
Object value = stateInfo.getAttribute( FEEDBACK_CHANGED_VALUE );
return value != null;
}
public int getFeedbackChangedValue() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
Integer value = ( Integer )stateInfo.getAttribute( FEEDBACK_CHANGED_VALUE );
return value.intValue();
}
public Control getFeedbackChangedControl() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
return ( Control )stateInfo.getAttribute( FEEDBACK_CHANGED_CONTROL );
}
public void setDataTypeChanged( final Control control,
final TransferData dataType )
{
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( DATATYPE_CHANGED_VALUE, dataType );
stateInfo.setAttribute( DATATYPE_CHANGED_CONTROL, control );
}
public void cancelDataTypeChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
stateInfo.setAttribute( DATATYPE_CHANGED_VALUE, null );
stateInfo.setAttribute( DATATYPE_CHANGED_CONTROL, null );
}
public boolean hasDataTypeChanged() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
Object value = stateInfo.getAttribute( DATATYPE_CHANGED_VALUE );
return value != null;
}
public TransferData getDataTypeChangedValue() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
return ( TransferData )stateInfo.getAttribute( DATATYPE_CHANGED_VALUE );
}
public Control getDataTypeChangedControl() {
IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
return ( Control )stateInfo.getAttribute( DATATYPE_CHANGED_CONTROL );
}
}