/*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2020 Association for Decentralized Information Management
* in Industry THTH ry.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
*
* Contributors:
* VTT Technical Research Centre of Finland - initial API and implementation
+ * Semantum Oy - gitlab #454
*******************************************************************************/
package org.simantics.g2d.diagram.handler;
}
public static interface PickSorter {
+ /**
+ * Sorts the specified element list.
+ *
+ * @param elements the element list to sort
+ */
void sort(List<IElement> elements);
+ /**
+ * Extended interface-method that receives the pick request in addition to the
+ * picked elements to be sorted. Allows e.g. looking at the pick area in the
+ * sorter.
+ *
+ * <p>
+ * The default implementation just invokes {@link #sort(List)} ignoring the pick
+ * request. The default implementation also keeps PickSorter API/ABI-compatible.
+ *
+ * @param request the original pick request that produced the hits listed in
+ * <code>elements</code>
+ * @param elements the element list to sort
+ *
+ * @author Tuukka Lehtonen
+ * @since 1.43.0, 1.35.3
+ */
+ default void sort(PickRequest request, List<IElement> elements) {
+ sort(elements);
+ }
+
//
public static final PickSorter CONNECTIONS_LAST = new PickSorter() {
@Override
/*******************************************************************************
- * Copyright (c) 2007, 2018 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2020 Association for Decentralized Information Management
* in Industry THTH ry.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
*
* Contributors:
* VTT Technical Research Centre of Finland - initial API and implementation
- * Semantum Oy - gitlab #66 - parallel/spatial optimization
+ * Semantum Oy - gitlab #60, #454 - parallel/spatial optimization
*******************************************************************************/
package org.simantics.g2d.diagram.handler.impl;
if (!result.isEmpty()) {
if (request.pickSorter != null) {
List<IElement> elems = new ArrayList<>(result);
- request.pickSorter.sort(elems);
+ request.pickSorter.sort(request, elems);
finalResult.addAll(elems);
} else {
finalResult.addAll(result);