/** * */ package org.celllife.idart.gui.utils.tableViewerUtils; import model.nonPersistent.PackagesWithSelection; import org.celllife.idart.gui.utils.ResourceUtils; import org.celllife.idart.gui.utils.iDartFont; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Shell; /** * @author Rashid * */ public class MyCheckBoxLabelProvider extends ColumnLabelProvider { private static final String CHECKED_KEY = "CHECKED"; private static final String UNCHECK_KEY = "UNCHECKED"; public MyCheckBoxLabelProvider(ColumnViewer viewer) { if (JFaceResources.getImageRegistry().getDescriptor(CHECKED_KEY) == null) { JFaceResources.getImageRegistry().put(UNCHECK_KEY, makeShot(viewer.getControl().getShell(), false)); JFaceResources.getImageRegistry().put(CHECKED_KEY, makeShot(viewer.getControl().getShell(), true)); } } private Image makeShot(Shell shell, boolean type) { Shell s = new Shell(shell, SWT.NO_TRIM); Button b = new Button(s, SWT.CHECK); b.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); b.setSelection(type); Point bsize = b.computeSize(SWT.DEFAULT, SWT.DEFAULT); b.setSize(bsize); b.setLocation(0, 0); s.setSize(bsize); s.open(); GC gc = new GC(b); Image image = new Image(shell.getDisplay(), bsize.x, bsize.y); gc.copyArea(image, 0, 0); gc.dispose(); s.close(); return image; } @Override public Image getImage(Object element) { if (isChecked(element)) { return JFaceResources.getImageRegistry().getDescriptor(CHECKED_KEY) .createImage(); } else { return JFaceResources.getImageRegistry().getDescriptor(UNCHECK_KEY) .createImage(); } } @Override public String getText(Object element) { return ""; } protected boolean isChecked(Object element) { return ((PackagesWithSelection) element).isSelected(); } }