@SuppressWarnings("unchecked") private void drawLogEvents( final GanttRenderingData data, final IDuration d, final GanttDraw ganttDrawData, final int y) { List events = data.getEvents(); AbstractLogEvent seed = new AbstractLogEvent() {}; seed.setTs(d.getStartTime()); int index = Collections.binarySearch(events, seed); index = index < 0 ? -index - 1 : index; Object durationCore = 0; Object genericCore = 0; short durationCoreS = 0; short genericCoreS = 0; for (int i = index; i < data.getEvents().size(); i++) { ILogEvent e = data.getEvents().get(i); if (!d.contains(e.getTs())) { break; } if (d instanceof IGenericLogItem && e instanceof IGenericLogItem) { final IGenericLogItem durationEvent = (IGenericLogItem) d; durationCore = durationEvent.getProperty(GenericTypePackage.EXECUTION_UNIT); final IGenericLogItem genericEvent = (IGenericLogItem) e; genericCore = genericEvent.getProperty(GenericTypePackage.EXECUTION_UNIT); if (durationCore != null && genericCore != null) { durationCoreS = (Short) durationCore; genericCoreS = (Short) genericCore; if (durationCoreS != genericCoreS) { continue; } } } for (int ii = 0; ii < typeArray.length; ii++) { try { IType type2 = typeReg.getType(typeArray[ii]); if (type2 != null) { if (e.getType() == type2) { final int x = ruler.toScreen(e.getTs()); if (x < 0) { break; } else { final Event event = new Event(e, x, y, 2, DURATION_HEIGHT); ganttDrawData.add(event); event.setZ(10000000); // Actual element final IColor eventColor = data.getColorProvider().getColor(e.getType()); colorByTypeMap.put(e.getType(), eventColor.toColor()); if (eventColor == null) { event.setBackgroundColor(SWTResourceManager.getColor(200, 20, 40)); } else { event.setBackgroundColor(eventColor.toColor()); } break; } } } } catch (IllegalArgumentException err) { // Ignore type, does not exist any more. } } } }