Skip to content

Commit 0135722

Browse files
committed
Improve StructuredDrop.handler().
1 parent 7a14fe2 commit 0135722

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

durian-swt/src/main/java/com/diffplug/common/swt/dnd/StructuredDrop.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222
import java.util.Objects;
23+
import java.util.function.BiConsumer;
2324
import java.util.function.BiFunction;
2425
import java.util.function.Consumer;
2526
import java.util.function.Function;
26-
import java.util.function.Predicate;
2727

2828
import javax.annotation.Nullable;
2929

@@ -38,7 +38,6 @@
3838
import org.eclipse.swt.dnd.TransferData;
3939
import org.eclipse.swt.widgets.Control;
4040

41-
import com.diffplug.common.base.Predicates;
4241
import com.diffplug.common.collect.ImmutableList;
4342
import com.diffplug.common.collect.ImmutableMap;
4443
import com.diffplug.common.collect.Immutables;
@@ -221,6 +220,24 @@ public static Transfer preferDropTransfer(DropTargetEvent event, Transfer[] pref
221220
return null;
222221
}
223222

223+
public static <T> TypedDropHandler<T> handler(DndOp op, Consumer<T> onValue) {
224+
return handler(op, (unusedEvent, value) -> onValue.accept(value));
225+
}
226+
227+
public static <T> TypedDropHandler<T> handler(DndOp op, BiConsumer<DropTargetEvent, T> onValue) {
228+
return new AbstractTypedDropHandler<T>(op) {
229+
@Override
230+
protected boolean accept(T value) {
231+
return true;
232+
}
233+
234+
@Override
235+
protected void drop(DropTargetEvent event, T value, boolean moved) {
236+
onValue.accept(event, value);
237+
}
238+
};
239+
}
240+
224241
public static class Listener implements DropTargetListener {
225242
final ImmutableMap<Transfer, Handler> handlers;
226243
final Transfer[] transfers;
@@ -332,24 +349,4 @@ public void onEvent(DropMethod method, @Nullable DropTargetEvent e, T value) {
332349

333350
protected abstract void drop(DropTargetEvent event, T value, boolean moved);
334351
}
335-
336-
/** Creates a TypedDropHandler for the given type. */
337-
public static <T> TypedDropHandler<T> handler(DndOp op, Predicate<T> predicate, Consumer<T> onDrop) {
338-
return new AbstractTypedDropHandler<T>(op) {
339-
@Override
340-
protected boolean accept(T value) {
341-
return predicate.test(value);
342-
}
343-
344-
@Override
345-
protected void drop(DropTargetEvent event, T value, boolean moved) {
346-
onDrop.accept(value);
347-
}
348-
};
349-
}
350-
351-
/** Creates a TypedDropHandler for the given type. */
352-
public static <T> TypedDropHandler<T> handler(DndOp op, Consumer<T> onDrop) {
353-
return handler(op, Predicates.alwaysTrue(), onDrop);
354-
}
355352
}

0 commit comments

Comments
 (0)