package org.eclipse.nebula.widgets.gallery.tests;
import java.util.ArrayList;
import junit.framework.TestCase;
import org.eclipse.nebula.widgets.gallery.DefaultGalleryGroupRenderer;
import org.eclipse.nebula.widgets.gallery.DefaultGalleryItemRenderer;
import org.eclipse.nebula.widgets.gallery.Gallery;
import org.eclipse.nebula.widgets.gallery.GalleryItem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class GalleryVirtualBehaviorTest extends TestCase {
Display d = null;
Shell s = null;
private boolean createdDisplay = false;
protected void setUp() throws Exception {
d = Display.getCurrent();
if( d == null ){
d = new Display();
createdDisplay = true;
}
s = new Shell(d, SWT.NONE);
super.setUp();
}
protected void tearDown() throws Exception {
if( createdDisplay){
d.dispose();
}
super.tearDown();
}
private Gallery createGallery(int flags) {
Gallery g = new Gallery(s, flags);
// Renderers
DefaultGalleryGroupRenderer gr = new DefaultGalleryGroupRenderer();
gr.setMinMargin(2);
gr.setItemHeight(56);
gr.setItemWidth(72);
gr.setAutoMargin(true);
g.setGroupRenderer(gr);
DefaultGalleryItemRenderer ir = new DefaultGalleryItemRenderer();
g.setItemRenderer(ir);
return g;
}
public void testGalleryVirtualNew() {
Gallery widget = createGallery(SWT.V_SCROLL | SWT.VIRTUAL);
final ArrayList setDataCalls = new ArrayList();
widget.addListener(SWT.SetData, new Listener() {
public void handleEvent(Event event) {
setDataCalls.add(event.item);
}
});
assertEquals(0, widget.getItemCount());
GalleryItem item1 = new GalleryItem(widget, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(item1, widget.getItem(0));
assertFalse( setDataCalls.contains(item1));
GalleryItem item2 = new GalleryItem(item1, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(1, item1.getItemCount());
assertEquals(item2, item1.getItem(0));
assertFalse( setDataCalls.contains(item2));
item1.dispose();
assertEquals( 0, widget.getItemCount());
assertTrue( item2.isDisposed());
// Test removeAll
item1 = new GalleryItem(widget, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(item1, widget.getItem(0));
assertFalse( setDataCalls.contains(item1));
widget.removeAll();
assertEquals(0, widget.getItemCount());
}
/**
* This test is for the reference behavior of Tree
*/
public void testTreeVirtualNew() {
Tree widget = new Tree(s, SWT.VIRTUAL);
final ArrayList setDataCalls = new ArrayList();
widget.addListener(SWT.SetData, new Listener() {
public void handleEvent(Event event) {
setDataCalls.add(event.item);
}
});
assertEquals(0, widget.getItemCount());
TreeItem item1 = new TreeItem(widget, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(item1, widget.getItem(0));
assertFalse( setDataCalls.contains(item1));
TreeItem item2 = new TreeItem(item1, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(1, item1.getItemCount());
assertEquals(item2, item1.getItem(0));
assertFalse( setDataCalls.contains(item2));
item1.dispose();
assertEquals( 0, widget.getItemCount());
assertTrue( item2.isDisposed());
// Test removeAll
item1 = new TreeItem(widget, SWT.NONE);
assertEquals(1, widget.getItemCount());
assertEquals(item1, widget.getItem(0));
assertFalse( setDataCalls.contains(item1));
widget.removeAll();
assertEquals(0, widget.getItemCount());
}
}