package com.yoursway.swt.coolsidebar;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import com.yoursway.swt.coolsidebar.viewmodel.SidebarSection;
class SectionTitleView implements SidebarViewChild {
public SectionTitleView(SidebarSection section, Composite parent) {
final Canvas canvas = new Canvas(parent, SWT.TRANSPARENT);
GridDataFactory.fillDefaults().grab(true, false).hint(0, 24).applyTo(canvas);
final Font font = new Font(Display.getDefault(), "Gill Sans", 14, SWT.NONE);
final String text = section.name();
final Color textColor = new Color(canvas.getDisplay(), 96, 110, 128);
final Color edgeColor = new Color(canvas.getDisplay(), 255, 255, 255);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.setFont(font);
int width = canvas.getSize().x;
Point textExtent = e.gc.textExtent(text);
String resultText = text.toUpperCase();
while (textExtent.x > width && resultText.length() > 0) {
resultText = text.substring(0, resultText.length() - 1);
textExtent = e.gc.textExtent(resultText + "...");
}
e.gc.setForeground(edgeColor);
e.gc.setAlpha(100);
e.gc.drawText(resultText, 10, 6, true);
e.gc.setForeground(textColor);
e.gc.setAlpha(255);
e.gc.drawText(resultText, 10, 5, true);
}
});
}
}