package com.opendoorlogistics.studio.components.map.plugins;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import com.opendoorlogistics.api.standardcomponents.map.MapApi;
import com.opendoorlogistics.api.standardcomponents.map.MapApiListeners.OnToolTipListener;
import com.opendoorlogistics.api.standardcomponents.map.MapDataApi;
import com.opendoorlogistics.api.standardcomponents.map.MapPlugin;
import com.opendoorlogistics.api.tables.ODLTableReadOnly;
import com.opendoorlogistics.core.utils.strings.Strings;
public class CustomTooltipPlugin implements MapPlugin{
@Override
public String getId(){
return "com.opendoorlogistics.studio.components.map.plugins.CustomTooltipPlugin";
}
@Override
public void initMap(MapApi api) {
api.registerOnTooltipListener(new OnToolTipListener() {
@Override
public void onToolTip(MapApi api, MouseEvent evt, long[] objectIdsUnderMouse, StringBuilder currentTip) {
ArrayList<String> nonEmpties = new ArrayList<>();
MapDataApi data = api.getMapDataApi();
ODLTableReadOnly active = data.getUnfilteredActiveTable();
for (long id : objectIdsUnderMouse) {
String s = null;
if(active.containsRowId(id)){
s =(String) active.getValueById(id, data.getTooltipColumn());
}
if(!Strings.isEmptyWhenStandardised(s)){
nonEmpties.add(s);
}
}
// if everything was empty we should return null instead of an object count as this
// allows tooltips to be fully switched off by the configuration
if (nonEmpties.size() == 1) {
currentTip.append(nonEmpties.get(0));
} else if (nonEmpties.size() > 1) {
currentTip.append(Integer.toString(objectIdsUnderMouse.length) + " objects");
}
}
}, 0);
}
}