< prev index next >
src/java.desktop/share/classes/java/awt/dnd/DragSourceContext.java
Print this page
*** 44,69 ****
import sun.awt.AWTAccessor;
import sun.awt.ComponentFactory;
/**
! * The <code>DragSourceContext</code> class is responsible for managing the
* initiator side of the Drag and Drop protocol. In particular, it is responsible
* for managing drag event notifications to the
* {@linkplain DragSourceListener DragSourceListeners}
* and {@linkplain DragSourceMotionListener DragSourceMotionListeners}, and providing the
* {@link Transferable} representing the source data for the drag operation.
* <p>
! * Note that the <code>DragSourceContext</code> itself
! * implements the <code>DragSourceListener</code> and
! * <code>DragSourceMotionListener</code> interfaces.
* This is to allow the platform peer
* (the {@link DragSourceContextPeer} instance)
* created by the {@link DragSource} to notify
! * the <code>DragSourceContext</code> of
* state changes in the ongoing operation. This allows the
! * <code>DragSourceContext</code> object to interpose
* itself between the platform and the
* listeners provided by the initiator of the drag operation.
* <p>
* <a name="defaultCursor"></a>
* By default, {@code DragSourceContext} sets the cursor as appropriate
--- 44,69 ----
import sun.awt.AWTAccessor;
import sun.awt.ComponentFactory;
/**
! * The {@code DragSourceContext} class is responsible for managing the
* initiator side of the Drag and Drop protocol. In particular, it is responsible
* for managing drag event notifications to the
* {@linkplain DragSourceListener DragSourceListeners}
* and {@linkplain DragSourceMotionListener DragSourceMotionListeners}, and providing the
* {@link Transferable} representing the source data for the drag operation.
* <p>
! * Note that the {@code DragSourceContext} itself
! * implements the {@code DragSourceListener} and
! * {@code DragSourceMotionListener} interfaces.
* This is to allow the platform peer
* (the {@link DragSourceContextPeer} instance)
* created by the {@link DragSource} to notify
! * the {@code DragSourceContext} of
* state changes in the ongoing operation. This allows the
! * {@code DragSourceContext} object to interpose
* itself between the platform and the
* listeners provided by the initiator of the drag operation.
* <p>
* <a name="defaultCursor"></a>
* By default, {@code DragSourceContext} sets the cursor as appropriate
*** 95,187 ****
private static final long serialVersionUID = -115407898692194719L;
// used by updateCurrentCursor
/**
! * An <code>int</code> used by updateCurrentCursor()
! * indicating that the <code>Cursor</code> should change
! * to the default (no drop) <code>Cursor</code>.
*/
protected static final int DEFAULT = 0;
/**
! * An <code>int</code> used by updateCurrentCursor()
! * indicating that the <code>Cursor</code>
! * has entered a <code>DropTarget</code>.
*/
protected static final int ENTER = 1;
/**
! * An <code>int</code> used by updateCurrentCursor()
! * indicating that the <code>Cursor</code> is
! * over a <code>DropTarget</code>.
*/
protected static final int OVER = 2;
/**
! * An <code>int</code> used by updateCurrentCursor()
* indicating that the user operation has changed.
*/
protected static final int CHANGED = 3;
static {
AWTAccessor.setDragSourceContextAccessor(dsc -> dsc.peer);
}
/**
! * Called from <code>DragSource</code>, this constructor creates a new
! * <code>DragSourceContext</code> given the
! * <code>DragSourceContextPeer</code> for this Drag, the
! * <code>DragGestureEvent</code> that triggered the Drag, the initial
! * <code>Cursor</code> to use for the Drag, an (optional)
! * <code>Image</code> to display while the Drag is taking place, the offset
! * of the <code>Image</code> origin from the hotspot at the instant of the
! * triggering event, the <code>Transferable</code> subject data, and the
! * <code>DragSourceListener</code> to use during the Drag and Drop
* operation.
* <br>
! * If <code>DragSourceContextPeer</code> is <code>null</code>
! * <code>NullPointerException</code> is thrown.
* <br>
! * If <code>DragGestureEvent</code> is <code>null</code>
! * <code>NullPointerException</code> is thrown.
* <br>
! * If <code>Cursor</code> is <code>null</code> no exception is thrown and
* the default drag cursor behavior is activated for this drag operation.
* <br>
! * If <code>Image</code> is <code>null</code> no exception is thrown.
* <br>
! * If <code>Image</code> is not <code>null</code> and the offset is
! * <code>null</code> <code>NullPointerException</code> is thrown.
* <br>
! * If <code>Transferable</code> is <code>null</code>
! * <code>NullPointerException</code> is thrown.
* <br>
! * If <code>DragSourceListener</code> is <code>null</code> no exception
* is thrown.
*
* @param trigger the triggering event
* @param dragCursor the initial {@code Cursor} for this drag operation
* or {@code null} for the default cursor handling;
* see <a href="DragSourceContext.html#defaultCursor">class level documentation</a>
* for more details on the cursor handling mechanism during drag and drop
! * @param dragImage the <code>Image</code> to drag (or <code>null</code>)
* @param offset the offset of the image origin from the hotspot at the
* instant of the triggering event
! * @param t the <code>Transferable</code>
! * @param dsl the <code>DragSourceListener</code>
*
! * @throws IllegalArgumentException if the <code>Component</code> associated
! * with the trigger event is <code>null</code>.
! * @throws IllegalArgumentException if the <code>DragSource</code> for the
! * trigger event is <code>null</code>.
* @throws IllegalArgumentException if the drag action for the
! * trigger event is <code>DnDConstants.ACTION_NONE</code>.
* @throws IllegalArgumentException if the source actions for the
! * <code>DragGestureRecognizer</code> associated with the trigger
! * event are equal to <code>DnDConstants.ACTION_NONE</code>.
* @throws NullPointerException if dscp, trigger, or t are null, or
* if dragImage is non-null and offset is null
*/
public DragSourceContext(DragGestureEvent trigger, Cursor dragCursor,
Image dragImage, Point offset, Transferable t,
--- 95,187 ----
private static final long serialVersionUID = -115407898692194719L;
// used by updateCurrentCursor
/**
! * An {@code int} used by updateCurrentCursor()
! * indicating that the {@code Cursor} should change
! * to the default (no drop) {@code Cursor}.
*/
protected static final int DEFAULT = 0;
/**
! * An {@code int} used by updateCurrentCursor()
! * indicating that the {@code Cursor}
! * has entered a {@code DropTarget}.
*/
protected static final int ENTER = 1;
/**
! * An {@code int} used by updateCurrentCursor()
! * indicating that the {@code Cursor} is
! * over a {@code DropTarget}.
*/
protected static final int OVER = 2;
/**
! * An {@code int} used by updateCurrentCursor()
* indicating that the user operation has changed.
*/
protected static final int CHANGED = 3;
static {
AWTAccessor.setDragSourceContextAccessor(dsc -> dsc.peer);
}
/**
! * Called from {@code DragSource}, this constructor creates a new
! * {@code DragSourceContext} given the
! * {@code DragSourceContextPeer} for this Drag, the
! * {@code DragGestureEvent} that triggered the Drag, the initial
! * {@code Cursor} to use for the Drag, an (optional)
! * {@code Image} to display while the Drag is taking place, the offset
! * of the {@code Image} origin from the hotspot at the instant of the
! * triggering event, the {@code Transferable} subject data, and the
! * {@code DragSourceListener} to use during the Drag and Drop
* operation.
* <br>
! * If {@code DragSourceContextPeer} is {@code null}
! * {@code NullPointerException} is thrown.
* <br>
! * If {@code DragGestureEvent} is {@code null}
! * {@code NullPointerException} is thrown.
* <br>
! * If {@code Cursor} is {@code null} no exception is thrown and
* the default drag cursor behavior is activated for this drag operation.
* <br>
! * If {@code Image} is {@code null} no exception is thrown.
* <br>
! * If {@code Image} is not {@code null} and the offset is
! * {@code null NullPointerException} is thrown.
* <br>
! * If {@code Transferable} is {@code null}
! * {@code NullPointerException} is thrown.
* <br>
! * If {@code DragSourceListener} is {@code null} no exception
* is thrown.
*
* @param trigger the triggering event
* @param dragCursor the initial {@code Cursor} for this drag operation
* or {@code null} for the default cursor handling;
* see <a href="DragSourceContext.html#defaultCursor">class level documentation</a>
* for more details on the cursor handling mechanism during drag and drop
! * @param dragImage the {@code Image} to drag (or {@code null})
* @param offset the offset of the image origin from the hotspot at the
* instant of the triggering event
! * @param t the {@code Transferable}
! * @param dsl the {@code DragSourceListener}
*
! * @throws IllegalArgumentException if the {@code Component} associated
! * with the trigger event is {@code null}.
! * @throws IllegalArgumentException if the {@code DragSource} for the
! * trigger event is {@code null}.
* @throws IllegalArgumentException if the drag action for the
! * trigger event is {@code DnDConstants.ACTION_NONE}.
* @throws IllegalArgumentException if the source actions for the
! * {@code DragGestureRecognizer} associated with the trigger
! * event are equal to {@code DnDConstants.ACTION_NONE}.
* @throws NullPointerException if dscp, trigger, or t are null, or
* if dragImage is non-null and offset is null
*/
public DragSourceContext(DragGestureEvent trigger, Cursor dragCursor,
Image dragImage, Point offset, Transferable t,
*** 238,289 ****
updateCurrentCursor(trigger.getDragAction(), getSourceActions(), DEFAULT);
}
/**
! * Returns the <code>DragSource</code>
! * that instantiated this <code>DragSourceContext</code>.
*
! * @return the <code>DragSource</code> that
! * instantiated this <code>DragSourceContext</code>
*/
public DragSource getDragSource() { return trigger.getDragSource(); }
/**
! * Returns the <code>Component</code> associated with this
! * <code>DragSourceContext</code>.
*
! * @return the <code>Component</code> that started the drag
*/
public Component getComponent() { return trigger.getComponent(); }
/**
! * Returns the <code>DragGestureEvent</code>
* that initially triggered the drag.
*
* @return the Event that triggered the drag
*/
public DragGestureEvent getTrigger() { return trigger; }
/**
! * Returns a bitwise mask of <code>DnDConstants</code> that
* represent the set of drop actions supported by the drag source for the
! * drag operation associated with this <code>DragSourceContext</code>.
*
* @return the drop actions supported by the drag source
*/
public int getSourceActions() {
return sourceActions;
}
/**
* Sets the cursor for this drag operation to the specified
! * <code>Cursor</code>. If the specified <code>Cursor</code>
! * is <code>null</code>, the default drag cursor behavior is
* activated for this drag operation, otherwise it is deactivated.
*
* @param c the initial {@code Cursor} for this drag operation,
* or {@code null} for the default cursor handling;
* see {@linkplain Cursor class
--- 238,289 ----
updateCurrentCursor(trigger.getDragAction(), getSourceActions(), DEFAULT);
}
/**
! * Returns the {@code DragSource}
! * that instantiated this {@code DragSourceContext}.
*
! * @return the {@code DragSource} that
! * instantiated this {@code DragSourceContext}
*/
public DragSource getDragSource() { return trigger.getDragSource(); }
/**
! * Returns the {@code Component} associated with this
! * {@code DragSourceContext}.
*
! * @return the {@code Component} that started the drag
*/
public Component getComponent() { return trigger.getComponent(); }
/**
! * Returns the {@code DragGestureEvent}
* that initially triggered the drag.
*
* @return the Event that triggered the drag
*/
public DragGestureEvent getTrigger() { return trigger; }
/**
! * Returns a bitwise mask of {@code DnDConstants} that
* represent the set of drop actions supported by the drag source for the
! * drag operation associated with this {@code DragSourceContext}.
*
* @return the drop actions supported by the drag source
*/
public int getSourceActions() {
return sourceActions;
}
/**
* Sets the cursor for this drag operation to the specified
! * {@code Cursor}. If the specified {@code Cursor}
! * is {@code null}, the default drag cursor behavior is
* activated for this drag operation, otherwise it is deactivated.
*
* @param c the initial {@code Cursor} for this drag operation,
* or {@code null} for the default cursor handling;
* see {@linkplain Cursor class
*** 296,324 ****
useCustomCursor = (c != null);
setCursorImpl(c);
}
/**
! * Returns the current drag <code>Cursor</code>.
*
! * @return the current drag <code>Cursor</code>
*/
public Cursor getCursor() { return cursor; }
/**
! * Add a <code>DragSourceListener</code> to this
! * <code>DragSourceContext</code> if one has not already been added.
! * If a <code>DragSourceListener</code> already exists,
! * this method throws a <code>TooManyListenersException</code>.
*
! * @param dsl the <code>DragSourceListener</code> to add.
! * Note that while <code>null</code> is not prohibited,
* it is not acceptable as a parameter.
*
* @throws TooManyListenersException if
! * a <code>DragSourceListener</code> has already been added
*/
public synchronized void addDragSourceListener(DragSourceListener dsl) throws TooManyListenersException {
if (dsl == null) return;
--- 296,324 ----
useCustomCursor = (c != null);
setCursorImpl(c);
}
/**
! * Returns the current drag {@code Cursor}.
*
! * @return the current drag {@code Cursor}
*/
public Cursor getCursor() { return cursor; }
/**
! * Add a {@code DragSourceListener} to this
! * {@code DragSourceContext} if one has not already been added.
! * If a {@code DragSourceListener} already exists,
! * this method throws a {@code TooManyListenersException}.
*
! * @param dsl the {@code DragSourceListener} to add.
! * Note that while {@code null} is not prohibited,
* it is not acceptable as a parameter.
*
* @throws TooManyListenersException if
! * a {@code DragSourceListener} has already been added
*/
public synchronized void addDragSourceListener(DragSourceListener dsl) throws TooManyListenersException {
if (dsl == null) return;
*** 329,343 ****
else
listener = dsl;
}
/**
! * Removes the specified <code>DragSourceListener</code>
! * from this <code>DragSourceContext</code>.
*
! * @param dsl the <code>DragSourceListener</code> to remove;
! * note that while <code>null</code> is not prohibited,
* it is not acceptable as a parameter
*/
public synchronized void removeDragSourceListener(DragSourceListener dsl) {
if (listener != null && listener.equals(dsl)) {
--- 329,343 ----
else
listener = dsl;
}
/**
! * Removes the specified {@code DragSourceListener}
! * from this {@code DragSourceContext}.
*
! * @param dsl the {@code DragSourceListener} to remove;
! * note that while {@code null} is not prohibited,
* it is not acceptable as a parameter
*/
public synchronized void removeDragSourceListener(DragSourceListener dsl) {
if (listener != null && listener.equals(dsl)) {
*** 345,370 ****
} else
throw new IllegalArgumentException();
}
/**
! * Notifies the peer that the <code>Transferable</code>'s
! * <code>DataFlavor</code>s have changed.
*/
public void transferablesFlavorsChanged() {
if (peer != null) peer.transferablesFlavorsChanged();
}
/**
! * Calls <code>dragEnter</code> on the
! * <code>DragSourceListener</code>s registered with this
! * <code>DragSourceContext</code> and with the associated
! * <code>DragSource</code>, and passes them the specified
! * <code>DragSourceDragEvent</code>.
*
! * @param dsde the <code>DragSourceDragEvent</code>
*/
public void dragEnter(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragEnter(dsde);
--- 345,370 ----
} else
throw new IllegalArgumentException();
}
/**
! * Notifies the peer that the {@code Transferable}'s
! * {@code DataFlavor}s have changed.
*/
public void transferablesFlavorsChanged() {
if (peer != null) peer.transferablesFlavorsChanged();
}
/**
! * Calls {@code dragEnter} on the
! * {@code DragSourceListener}s registered with this
! * {@code DragSourceContext} and with the associated
! * {@code DragSource}, and passes them the specified
! * {@code DragSourceDragEvent}.
*
! * @param dsde the {@code DragSourceDragEvent}
*/
public void dragEnter(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragEnter(dsde);
*** 373,389 ****
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), ENTER);
}
/**
! * Calls <code>dragOver</code> on the
! * <code>DragSourceListener</code>s registered with this
! * <code>DragSourceContext</code> and with the associated
! * <code>DragSource</code>, and passes them the specified
! * <code>DragSourceDragEvent</code>.
*
! * @param dsde the <code>DragSourceDragEvent</code>
*/
public void dragOver(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragOver(dsde);
--- 373,389 ----
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), ENTER);
}
/**
! * Calls {@code dragOver} on the
! * {@code DragSourceListener}s registered with this
! * {@code DragSourceContext} and with the associated
! * {@code DragSource}, and passes them the specified
! * {@code DragSourceDragEvent}.
*
! * @param dsde the {@code DragSourceDragEvent}
*/
public void dragOver(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragOver(dsde);
*** 392,408 ****
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), OVER);
}
/**
! * Calls <code>dragExit</code> on the
! * <code>DragSourceListener</code>s registered with this
! * <code>DragSourceContext</code> and with the associated
! * <code>DragSource</code>, and passes them the specified
! * <code>DragSourceEvent</code>.
*
! * @param dse the <code>DragSourceEvent</code>
*/
public void dragExit(DragSourceEvent dse) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragExit(dse);
--- 392,408 ----
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), OVER);
}
/**
! * Calls {@code dragExit} on the
! * {@code DragSourceListener}s registered with this
! * {@code DragSourceContext} and with the associated
! * {@code DragSource}, and passes them the specified
! * {@code DragSourceEvent}.
*
! * @param dse the {@code DragSourceEvent}
*/
public void dragExit(DragSourceEvent dse) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragExit(dse);
*** 411,427 ****
updateCurrentCursor(DnDConstants.ACTION_NONE, DnDConstants.ACTION_NONE, DEFAULT);
}
/**
! * Calls <code>dropActionChanged</code> on the
! * <code>DragSourceListener</code>s registered with this
! * <code>DragSourceContext</code> and with the associated
! * <code>DragSource</code>, and passes them the specified
! * <code>DragSourceDragEvent</code>.
*
! * @param dsde the <code>DragSourceDragEvent</code>
*/
public void dropActionChanged(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dropActionChanged(dsde);
--- 411,427 ----
updateCurrentCursor(DnDConstants.ACTION_NONE, DnDConstants.ACTION_NONE, DEFAULT);
}
/**
! * Calls {@code dropActionChanged} on the
! * {@code DragSourceListener}s registered with this
! * {@code DragSourceContext} and with the associated
! * {@code DragSource}, and passes them the specified
! * {@code DragSourceDragEvent}.
*
! * @param dsde the {@code DragSourceDragEvent}
*/
public void dropActionChanged(DragSourceDragEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dropActionChanged(dsde);
*** 430,474 ****
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), CHANGED);
}
/**
! * Calls <code>dragDropEnd</code> on the
! * <code>DragSourceListener</code>s registered with this
! * <code>DragSourceContext</code> and with the associated
! * <code>DragSource</code>, and passes them the specified
! * <code>DragSourceDropEvent</code>.
*
! * @param dsde the <code>DragSourceDropEvent</code>
*/
public void dragDropEnd(DragSourceDropEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragDropEnd(dsde);
}
getDragSource().processDragDropEnd(dsde);
}
/**
! * Calls <code>dragMouseMoved</code> on the
! * <code>DragSourceMotionListener</code>s registered with the
! * <code>DragSource</code> associated with this
! * <code>DragSourceContext</code>, and them passes the specified
! * <code>DragSourceDragEvent</code>.
*
! * @param dsde the <code>DragSourceDragEvent</code>
* @since 1.4
*/
public void dragMouseMoved(DragSourceDragEvent dsde) {
getDragSource().processDragMouseMoved(dsde);
}
/**
! * Returns the <code>Transferable</code> associated with
! * this <code>DragSourceContext</code>.
*
! * @return the <code>Transferable</code>
*/
public Transferable getTransferable() { return transferable; }
/**
* If the default drag cursor behavior is active, this method
--- 430,474 ----
updateCurrentCursor(getSourceActions(), dsde.getTargetActions(), CHANGED);
}
/**
! * Calls {@code dragDropEnd} on the
! * {@code DragSourceListener}s registered with this
! * {@code DragSourceContext} and with the associated
! * {@code DragSource}, and passes them the specified
! * {@code DragSourceDropEvent}.
*
! * @param dsde the {@code DragSourceDropEvent}
*/
public void dragDropEnd(DragSourceDropEvent dsde) {
DragSourceListener dsl = listener;
if (dsl != null) {
dsl.dragDropEnd(dsde);
}
getDragSource().processDragDropEnd(dsde);
}
/**
! * Calls {@code dragMouseMoved} on the
! * {@code DragSourceMotionListener}s registered with the
! * {@code DragSource} associated with this
! * {@code DragSourceContext}, and them passes the specified
! * {@code DragSourceDragEvent}.
*
! * @param dsde the {@code DragSourceDragEvent}
* @since 1.4
*/
public void dragMouseMoved(DragSourceDragEvent dsde) {
getDragSource().processDragMouseMoved(dsde);
}
/**
! * Returns the {@code Transferable} associated with
! * this {@code DragSourceContext}.
*
! * @return the {@code Transferable}
*/
public Transferable getTransferable() { return transferable; }
/**
* If the default drag cursor behavior is active, this method
*** 476,488 ****
* supported by the drag source, the drop target action,
* and status, otherwise this method does nothing.
*
* @param sourceAct the actions supported by the drag source
* @param targetAct the drop target action
! * @param status one of the fields <code>DEFAULT</code>,
! * <code>ENTER</code>, <code>OVER</code>,
! * <code>CHANGED</code>
*/
@SuppressWarnings("fallthrough")
protected synchronized void updateCurrentCursor(int sourceAct, int targetAct, int status) {
// if the cursor has been previously set then don't do any defaults
--- 476,488 ----
* supported by the drag source, the drop target action,
* and status, otherwise this method does nothing.
*
* @param sourceAct the actions supported by the drag source
* @param targetAct the drop target action
! * @param status one of the fields {@code DEFAULT},
! * {@code ENTER}, {@code OVER},
! * {@code CHANGED}
*/
@SuppressWarnings("fallthrough")
protected synchronized void updateCurrentCursor(int sourceAct, int targetAct, int status) {
// if the cursor has been previously set then don't do any defaults
*** 530,554 ****
if (peer != null) peer.setCursor(cursor);
}
}
/**
! * Serializes this <code>DragSourceContext</code>. This method first
* performs default serialization. Next, this object's
! * <code>Transferable</code> is written out if and only if it can be
! * serialized. If not, <code>null</code> is written instead. In this case,
! * a <code>DragSourceContext</code> created from the resulting deserialized
! * stream will contain a dummy <code>Transferable</code> which supports no
! * <code>DataFlavor</code>s. Finally, this object's
! * <code>DragSourceListener</code> is written out if and only if it can be
! * serialized. If not, <code>null</code> is written instead.
*
* @serialData The default serializable fields, in alphabetical order,
! * followed by either a <code>Transferable</code> instance, or
! * <code>null</code>, followed by either a
! * <code>DragSourceListener</code> instance, or
! * <code>null</code>.
* @since 1.4
*/
private void writeObject(ObjectOutputStream s) throws IOException {
s.defaultWriteObject();
--- 530,554 ----
if (peer != null) peer.setCursor(cursor);
}
}
/**
! * Serializes this {@code DragSourceContext}. This method first
* performs default serialization. Next, this object's
! * {@code Transferable} is written out if and only if it can be
! * serialized. If not, {@code null} is written instead. In this case,
! * a {@code DragSourceContext} created from the resulting deserialized
! * stream will contain a dummy {@code Transferable} which supports no
! * {@code DataFlavor}s. Finally, this object's
! * {@code DragSourceListener} is written out if and only if it can be
! * serialized. If not, {@code null} is written instead.
*
* @serialData The default serializable fields, in alphabetical order,
! * followed by either a {@code Transferable} instance, or
! * {@code null}, followed by either a
! * {@code DragSourceListener} instance, or
! * {@code null}.
* @since 1.4
*/
private void writeObject(ObjectOutputStream s) throws IOException {
s.defaultWriteObject();
*** 557,574 ****
s.writeObject(SerializationTester.test(listener)
? listener : null);
}
/**
! * Deserializes this <code>DragSourceContext</code>. This method first
! * performs default deserialization for all non-<code>transient</code>
! * fields. This object's <code>Transferable</code> and
! * <code>DragSourceListener</code> are then deserialized as well by using
* the next two objects in the stream. If the resulting
! * <code>Transferable</code> is <code>null</code>, this object's
! * <code>Transferable</code> is set to a dummy <code>Transferable</code>
! * which supports no <code>DataFlavor</code>s.
*
* @since 1.4
*/
private void readObject(ObjectInputStream s)
throws ClassNotFoundException, IOException
--- 557,574 ----
s.writeObject(SerializationTester.test(listener)
? listener : null);
}
/**
! * Deserializes this {@code DragSourceContext}. This method first
! * performs default deserialization for all non-{@code transient}
! * fields. This object's {@code Transferable} and
! * {@code DragSourceListener} are then deserialized as well by using
* the next two objects in the stream. If the resulting
! * {@code Transferable} is {@code null}, this object's
! * {@code Transferable} is set to a dummy {@code Transferable}
! * which supports no {@code DataFlavor}s.
*
* @since 1.4
*/
private void readObject(ObjectInputStream s)
throws ClassNotFoundException, IOException
*** 652,672 ****
private transient Transferable transferable;
private transient DragSourceListener listener;
/**
! * <code>true</code> if the custom drag cursor is used instead of the
* default one.
*
* @serial
*/
private boolean useCustomCursor;
/**
! * A bitwise mask of <code>DnDConstants</code> that represents the set of
* drop actions supported by the drag source for the drag operation associated
! * with this <code>DragSourceContext.</code>
*
* @serial
*/
private int sourceActions;
}
--- 652,672 ----
private transient Transferable transferable;
private transient DragSourceListener listener;
/**
! * {@code true} if the custom drag cursor is used instead of the
* default one.
*
* @serial
*/
private boolean useCustomCursor;
/**
! * A bitwise mask of {@code DnDConstants} that represents the set of
* drop actions supported by the drag source for the drag operation associated
! * with this {@code DragSourceContext.}
*
* @serial
*/
private int sourceActions;
}
< prev index next >