private void drawRuler(final GanttRenderingData data) { ruler.draw( data.getDurations(), data.getGraphics(), data.getGraphics().getClipping().x, data.getGraphics().getClipping().width); }
private void drawMarker(final GanttRenderingData data) { final int markerX = ruler.toScreen(data.getMarker()) + data.getBounds().x / 2; if (markerX < ruler.min()) { return; } data.getGraphics() .drawString( TimeFormat.format(data.getFormatString(), data.getMarker()), markerX + LABEL_OFFSET_X, (int) (LANE_HEIGHT * VERIFCAL_MARKER_ADJUST + LEGEND_HEIGHT), true); data.getGraphics() .drawLine( markerX, LANE_HEIGHT + LEGEND_HEIGHT, markerX, LANE_START + lanes.size() * LANE_HEIGHT); }
private void drawEmpty(final GanttRenderingData data) { final Color pushed = data.getGraphics().getBackground(); data.getGraphics() .setBackground(data.getGraphics().getDevice().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); data.getGraphics().fillRectangle(data.getGraphics().getClipping()); data.getGraphics().drawText("No Gantt data available", 1, 1); data.getGraphics().setBackground(pushed); }
private void drawColumnNames( final GanttRenderingData data, final Map<String, TaskLaneEntry> lanes, final GanttDraw draw) { for (final Entry<String, TaskLaneEntry> entry : lanes.entrySet()) { final TaskLaneEntry taskEntry = entry.getValue(); final RGB rgb = data.getColorMap().getColor(taskEntry.getUser()); final Color resourceUserColor = new Color(data.getGraphics().getDevice(), rgb); taskEntry.setBackgroundColor(resourceUserColor); final int laneYStart = LANE_START + taskEntry.getLane() * LANE_HEIGHT; final Rectangle resourceBoundingBox = new Rectangle(0, laneYStart - data.getScrollOffset(), data.getSashXPos(), LANE_HEIGHT); taskEntry.setBounds(resourceBoundingBox); draw.add(taskEntry); } }
private void drawGrid(final GanttRenderingData data, final int laneIndex) { final Rectangle clipping = data.getGraphics().getClipping(); data.getGraphics().setClipping(getDataArea(data)); data.getGraphics().setClipping(clipping); data.getGraphics().setForeground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY)); final int x2 = data.getBounds().x + data.getBounds().width; int y = LANE_START - data.getScrollOffset(); data.getGraphics().drawLine(0, y, x2, y); for (int i = 1; i <= laneIndex; i++) { y += LANE_HEIGHT; data.getGraphics().drawLine(0, y, x2, y); } data.getGraphics().drawLine(-1, LANE_START, -1, LANE_START + laneIndex * LANE_HEIGHT); }
@SuppressWarnings("unchecked") GanttDraw draw(final GanttRenderingData data, final boolean drawB) { // Check pre-conditions JEKB ugly fix data.getDurations() == null if ((data.getDurations() == null) || (data.getDurations().size() < 1)) { drawEmpty(data); return ClassicGantRenderer.EMPTY_GANTT_DRAW; } Collections.sort(data.getDurations()); // compute a ruler only when drawB is drawn. if (drawB) { ruler = computeScaler(data); } // Graphics Setup data.getGraphics().setAntialias(SWT.OFF); data.getGraphics().setFont(font); final GanttDraw ganttDrawData = new GanttDraw(data.getGraphics(), ruler); lanes.clear(); int laneIndex = 0; for (final IArtifact user : data.getTasks()) { final TaskLaneEntry entry = new TaskLaneEntry(user); entry.setLane(laneIndex++); lanes.put(user.getName(), entry); } drawColumnNames(data, lanes, ganttDrawData); drawGrid(data, laneIndex); final Rectangle clipping = data.getGraphics().getClipping(); data.getGraphics() .setClipping( new Rectangle( data.getBounds().x, data.getBounds().y, data.getBounds().width, data.getBounds().height)); this.typeReg = TypeRegistry.getInstance(); data.getGraphics().setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK)); data.getGraphics().setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK)); if (drawB) { drawDurations(data, ganttDrawData); drawMarker(data); drawRuler(data); LegendRenderer r = new LegendRenderer(); r.drawLegend( data.getGraphics().getClipping().width / 2, Graphics.valueOf(data.getGraphics()), colorByTypeMap, false); } data.getGraphics().setClipping(clipping); data.setDrawnSize( new Point( data.getBounds().width, ClassicGantRenderer.LANE_START + (lanes.size() + 1) * ClassicGantRenderer.LANE_HEIGHT)); // if (drawB) { ganttDrawData.setBounds(SWTUtil.convert(data.getBounds())); // } else { // } return ganttDrawData; }