[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: Drawing to GC
|
This does it through JFace (direct to an swt Tree shouldn't be any
different w.r.t. creating the Image):
public static void main (String[] args) {
final Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(10,10,200,200);
TreeViewer tree = new TreeViewer(shell,SWT.NONE);
tree.getTree().setBounds(10,10,140,140);
tree.setLabelProvider(new ILabelProvider() {
public Image getImage(Object element) {
Image image = new Image (display, 16, 16);
int random = (int)System.currentTimeMillis() % 2;
Color color;
if (random == 0) {
color = display.getSystemColor (SWT.COLOR_RED);
} else {
color = display.getSystemColor (SWT.COLOR_BLUE);
}
GC gc = new GC (image);
gc.setBackground (color);
gc.fillOval (1, 1, 14, 14);
gc.dispose ();
return image;
}
public String getText(Object element) {
return "node";
}
public void addListener(ILabelProviderListener listener) {}
public void dispose() {}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {}
});
tree.setContentProvider(new ITreeContentProvider() {
public Object[] getChildren(Object parentElement) {return null;}
public Object getParent(Object element) {return null;}
public boolean hasChildren(Object element) {return true;}
public Object[] getElements(Object inputElement) {
return new String[] {"",""};
}
public void dispose() {}
public void inputChanged(Viewer viewer, Object oldInput, Object
newInput) {}
});
tree.setInput("");
shell.pack ();
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
Grant
Angel Shishkov wrote:
> Hello,
> I would like to dynamically generate the labels for a Tree. The labels must
> be circles with varying colors. I don't have the labels as images in a
> file, so I need to create the Image dynamically in the code. This is what
> I've tried:
> Image label = new Image(null, 15, 15);
> GC gc = new GC (label);
> gc.setBackground(ColorConstants.blue);
> gc.fillOval(0, 0, 15, 15);
> return label;
> However, the labels that get displayed by this are just black squares. I
> have also tried:
> Image label = new Image(Display.getCurrent(), 15, 15);
> with the same effect.
> I have tried this with both a JFace TreeViewer by implementing the
> LabelProvider and an SWT Tree widget by using TreeItem.setImage(img); Both
> methods produce a tree with black squares for labels.
> Is this the correct way to draw to a GC? Am I missing something?
> Any help is greatly appreciated. Thanks!
> Angel