public void testNestedTabs() { SwtMetawidget metawidget = new SwtMetawidget(new Shell(SwtMetawidgetTests.TEST_DISPLAY, SWT.NONE), SWT.NONE); metawidget.setMetawidgetLayout( new TabFolderLayoutDecorator( new TabFolderLayoutDecoratorConfig() .setLayout( new TabFolderLayoutDecorator( new TabFolderLayoutDecoratorConfig().setLayout(new GridLayout()))))); metawidget.setToInspect(new Bar()); assertEquals("Abc:", ((Label) metawidget.getChildren()[0]).getText()); assertTrue(metawidget.getChildren()[1] instanceof Text); TabFolder outerTabFolder = (TabFolder) metawidget.getChildren()[2]; assertEquals("Foo", outerTabFolder.getItem(0).getText()); Composite outerPanel = (Composite) outerTabFolder.getChildren()[0]; assertEquals(4, outerPanel.getChildren().length); TabFolder innerTabFolder = (TabFolder) outerPanel.getChildren()[0]; assertEquals("Bar", innerTabFolder.getItem(0).getText()); Composite barComposite = (Composite) innerTabFolder.getChildren()[0]; assertEquals("Def:", ((Label) barComposite.getChildren()[0]).getText()); assertTrue(barComposite.getChildren()[1] instanceof Button); assertEquals((barComposite.getChildren()[1].getStyle() & SWT.CHECK), SWT.CHECK); assertEquals("Ghi:", ((Label) barComposite.getChildren()[2]).getText()); assertEquals((barComposite.getChildren()[3].getStyle() & SWT.MULTI), SWT.MULTI); assertEquals((barComposite.getChildren()[3].getStyle() & SWT.BORDER), SWT.BORDER); assertEquals((barComposite.getChildren()[3].getStyle() & SWT.V_SCROLL), SWT.V_SCROLL); assertEquals((barComposite.getChildren()[3].getStyle() & SWT.WRAP), SWT.WRAP); assertEquals(4, barComposite.getChildren().length); assertEquals("Baz", innerTabFolder.getItem(1).getText()); Composite bazComposite = (Composite) innerTabFolder.getChildren()[1]; assertEquals("Jkl:", ((Label) bazComposite.getChildren()[0]).getText()); assertTrue(bazComposite.getChildren()[1] instanceof Text); assertEquals(2, bazComposite.getChildren().length); assertEquals("Mno:", ((Label) outerPanel.getChildren()[1]).getText()); assertTrue(outerPanel.getChildren()[2] instanceof Button); assertEquals((outerPanel.getChildren()[2].getStyle() & SWT.CHECK), SWT.CHECK); innerTabFolder = (TabFolder) outerPanel.getChildren()[3]; assertEquals("Moo", innerTabFolder.getItem(0).getText()); Composite mooComposite = (Composite) innerTabFolder.getChildren()[0]; assertEquals("Pqr:", ((Label) mooComposite.getChildren()[0]).getText()); assertTrue(mooComposite.getChildren()[1] instanceof Text); assertEquals(2, mooComposite.getChildren().length); assertEquals("Stu:", ((Label) metawidget.getChildren()[3]).getText()); assertTrue(metawidget.getChildren()[4] instanceof Text); assertEquals(5, metawidget.getChildren().length); // Test components within nested tabs still accessible by name assertEquals(metawidget.getChildren()[1], metawidget.getControl("abc")); assertEquals(barComposite.getChildren()[1], metawidget.getControl("def")); assertEquals(barComposite.getChildren()[3], metawidget.getControl("ghi")); assertEquals(bazComposite.getChildren()[1], metawidget.getControl("jkl")); assertEquals(outerPanel.getChildren()[2], metawidget.getControl("mno")); assertEquals(mooComposite.getChildren()[1], metawidget.getControl("pqr")); assertEquals(metawidget.getChildren()[4], metawidget.getControl("stu")); }