|
Link Here
|
| 34 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem; |
34 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem; |
| 35 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator; |
35 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator; |
| 36 |
import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl; |
36 |
import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl; |
| 37 |
import org.eclipse.e4.ui.workbench.renderers.swt.MenuRenderer; |
37 |
import org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer; |
| 38 |
import org.eclipse.e4.ui.workbench.swt.factories.IRendererFactory; |
38 |
import org.eclipse.e4.ui.workbench.swt.factories.IRendererFactory; |
|
|
39 |
import org.eclipse.jface.action.IContributionItem; |
| 40 |
import org.eclipse.jface.action.MenuManager; |
| 39 |
import org.eclipse.swt.SWT; |
41 |
import org.eclipse.swt.SWT; |
| 40 |
import org.eclipse.swt.widgets.Event; |
42 |
import org.eclipse.swt.widgets.Event; |
|
|
43 |
import org.eclipse.swt.widgets.Menu; |
| 41 |
import org.eclipse.swt.widgets.MenuItem; |
44 |
import org.eclipse.swt.widgets.MenuItem; |
|
|
45 |
import org.eclipse.swt.widgets.Widget; |
| 42 |
|
46 |
|
| 43 |
public class MMenuItemTest extends TestCase { |
47 |
public class MMenuItemTest extends TestCase { |
| 44 |
protected IEclipseContext appContext; |
48 |
protected IEclipseContext appContext; |
|
Link Here
|
| 82 |
wb = new E4Workbench(window, appContext); |
86 |
wb = new E4Workbench(window, appContext); |
| 83 |
wb.createAndRunUI(window); |
87 |
wb.createAndRunUI(window); |
| 84 |
|
88 |
|
|
|
89 |
((MenuManager) ((Widget) menu.getWidget()).getData()).updateAll(true); |
| 90 |
|
| 85 |
Object widget = menuItem.getWidget(); |
91 |
Object widget = menuItem.getWidget(); |
| 86 |
assertNotNull(widget); |
92 |
assertNotNull(widget); |
| 87 |
assertTrue(widget instanceof MenuItem); |
93 |
assertTrue(widget instanceof MenuItem); |
|
Link Here
|
| 157 |
wb = new E4Workbench(window, appContext); |
163 |
wb = new E4Workbench(window, appContext); |
| 158 |
wb.createAndRunUI(window); |
164 |
wb.createAndRunUI(window); |
| 159 |
|
165 |
|
|
|
166 |
((MenuManager) ((Widget) menu.getWidget()).getData()).updateAll(true); |
| 167 |
|
| 160 |
Object widget1 = menuItem1.getWidget(); |
168 |
Object widget1 = menuItem1.getWidget(); |
| 161 |
assertNotNull(widget1); |
169 |
assertNotNull(widget1); |
| 162 |
assertTrue(widget1 instanceof MenuItem); |
170 |
assertTrue(widget1 instanceof MenuItem); |
|
Link Here
|
| 212 |
wb = new E4Workbench(window, appContext); |
220 |
wb = new E4Workbench(window, appContext); |
| 213 |
wb.createAndRunUI(window); |
221 |
wb.createAndRunUI(window); |
| 214 |
|
222 |
|
|
|
223 |
((MenuManager) ((Widget) menu.getWidget()).getData()).updateAll(true); |
| 224 |
|
| 215 |
Object widget1 = menuItem.getWidget(); |
225 |
Object widget1 = menuItem.getWidget(); |
| 216 |
assertNotNull(widget1); |
226 |
assertNotNull(widget1); |
| 217 |
assertTrue(widget1 instanceof MenuItem); |
227 |
assertTrue(widget1 instanceof MenuItem); |
|
Link Here
|
| 228 |
MCommand command = CommandsFactoryImpl.eINSTANCE.createCommand(); |
238 |
MCommand command = CommandsFactoryImpl.eINSTANCE.createCommand(); |
| 229 |
|
239 |
|
| 230 |
command.setElementId("commandId"); |
240 |
command.setElementId("commandId"); |
| 231 |
command.setCommandName("CommandForTest"); |
|
|
| 232 |
|
241 |
|
| 233 |
menuItem.setCommand(command); |
242 |
menuItem.setCommand(command); |
| 234 |
menuItem.setType(ItemType.CHECK); |
243 |
menuItem.setType(ItemType.CHECK); |
|
Link Here
|
| 240 |
MApplication application = ApplicationFactoryImpl.eINSTANCE |
249 |
MApplication application = ApplicationFactoryImpl.eINSTANCE |
| 241 |
.createApplication(); |
250 |
.createApplication(); |
| 242 |
application.getChildren().add(window); |
251 |
application.getChildren().add(window); |
| 243 |
application.getCommands().add(command); |
|
|
| 244 |
application.setContext(appContext); |
252 |
application.setContext(appContext); |
| 245 |
appContext.set(MApplication.class.getName(), application); |
253 |
appContext.set(MApplication.class.getName(), application); |
| 246 |
|
254 |
|
| 247 |
wb = new E4Workbench(window, appContext); |
255 |
wb = new E4Workbench(window, appContext); |
| 248 |
wb.createAndRunUI(window); |
256 |
wb.createAndRunUI(window); |
| 249 |
|
257 |
|
|
|
258 |
MenuManager barManager = (MenuManager) ((Menu) menu.getWidget()) |
| 259 |
.getData(); |
| 260 |
barManager.updateAll(true); |
| 261 |
|
| 250 |
Object widget1 = menuItem.getWidget(); |
262 |
Object widget1 = menuItem.getWidget(); |
| 251 |
assertNotNull(widget1); |
263 |
assertNotNull(widget1); |
| 252 |
assertTrue(widget1 instanceof MenuItem); |
264 |
assertTrue(widget1 instanceof MenuItem); |
|
Link Here
|
| 255 |
assertTrue(menuItemWidget.getSelection()); |
267 |
assertTrue(menuItemWidget.getSelection()); |
| 256 |
} |
268 |
} |
| 257 |
|
269 |
|
| 258 |
public void XXXtestSubMenuCreation() throws Exception { |
270 |
public void testSubMenuCreation() throws Exception { |
| 259 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
271 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 260 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
272 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 261 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
273 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 289 |
wb = new E4Workbench(window, appContext); |
301 |
wb = new E4Workbench(window, appContext); |
| 290 |
wb.createAndRunUI(window); |
302 |
wb.createAndRunUI(window); |
| 291 |
|
303 |
|
|
|
304 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
| 305 |
MenuManager manager = renderer.getManager(menuBar); |
| 306 |
assertNotNull("failed to create menu bar manager", manager); |
| 307 |
|
| 308 |
assertEquals(1, manager.getSize()); |
| 309 |
|
| 310 |
MenuManager fileManager = (MenuManager) manager.getItems()[0]; |
| 311 |
MenuManager fileR = renderer.getManager(fileMenu); |
| 312 |
assertEquals(fileManager, fileR); |
| 313 |
|
| 314 |
assertEquals(3, fileManager.getSize()); |
| 292 |
} |
315 |
} |
| 293 |
|
316 |
|
| 294 |
public void XXXtestTbrItem() throws Exception { |
317 |
public void testTbrItem() throws Exception { |
| 295 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
318 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 296 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
319 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 297 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
320 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 326 |
wb = new E4Workbench(window, appContext); |
349 |
wb = new E4Workbench(window, appContext); |
| 327 |
wb.createAndRunUI(window); |
350 |
wb.createAndRunUI(window); |
| 328 |
|
351 |
|
| 329 |
// MenuRenderer renderer = getRenderer(appContext, menuBar); |
352 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
|
|
353 |
MenuManager manager = renderer.getManager(menuBar); |
| 354 |
assertNotNull("failed to create menu bar manager", manager); |
| 355 |
|
| 356 |
assertEquals(1, manager.getSize()); |
| 357 |
|
| 358 |
MenuManager fileManager = (MenuManager) manager.getItems()[0]; |
| 359 |
MenuManager fileR = renderer.getManager(fileMenu); |
| 360 |
assertEquals(fileManager, fileR); |
| 330 |
|
361 |
|
|
|
362 |
assertEquals(2, fileManager.getSize()); |
| 331 |
} |
363 |
} |
| 332 |
|
364 |
|
| 333 |
public void XXXtestInvisibleItem() throws Exception { |
365 |
public void testInvisibleItem() throws Exception { |
| 334 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
366 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 335 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
367 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 336 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
368 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 365 |
wb = new E4Workbench(window, appContext); |
397 |
wb = new E4Workbench(window, appContext); |
| 366 |
wb.createAndRunUI(window); |
398 |
wb.createAndRunUI(window); |
| 367 |
|
399 |
|
| 368 |
// MenuRenderer renderer = getRenderer(appContext, menuBar); |
400 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
|
|
401 |
MenuManager manager = renderer.getManager(menuBar); |
| 402 |
assertNotNull("failed to create menu bar manager", manager); |
| 403 |
|
| 404 |
assertEquals(1, manager.getSize()); |
| 405 |
|
| 406 |
MenuManager fileManager = (MenuManager) manager.getItems()[0]; |
| 407 |
MenuManager fileR = renderer.getManager(fileMenu); |
| 408 |
assertEquals(fileManager, fileR); |
| 369 |
|
409 |
|
|
|
410 |
assertEquals(3, fileManager.getSize()); |
| 411 |
|
| 412 |
assertEquals(false, fileManager.getItems()[2].isVisible()); |
| 370 |
} |
413 |
} |
| 371 |
|
414 |
|
| 372 |
public void XXXtestMenuContribution() throws Exception { |
415 |
public void testMenuContribution() throws Exception { |
| 373 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
416 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 374 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
417 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 375 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
418 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 404 |
wb = new E4Workbench(window, appContext); |
447 |
wb = new E4Workbench(window, appContext); |
| 405 |
wb.createAndRunUI(window); |
448 |
wb.createAndRunUI(window); |
| 406 |
|
449 |
|
|
|
450 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
| 451 |
|
| 452 |
MenuManager fileManager = renderer.getManager(fileMenu); |
| 453 |
assertNotNull("No file menu?", fileManager); |
| 454 |
|
| 455 |
assertEquals(4, fileManager.getSize()); |
| 456 |
|
| 457 |
assertEquals("mmc.item1", fileManager.getItems()[3].getId()); |
| 407 |
} |
458 |
} |
| 408 |
|
459 |
|
| 409 |
public void XXXtestWithVisible() throws Exception { |
460 |
public void testWithVisible() throws Exception { |
| 410 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
461 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 411 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
462 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 412 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
463 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 441 |
wb = new E4Workbench(window, appContext); |
492 |
wb = new E4Workbench(window, appContext); |
| 442 |
wb.createAndRunUI(window); |
493 |
wb.createAndRunUI(window); |
| 443 |
|
494 |
|
|
|
495 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
| 496 |
|
| 497 |
MenuManager fileManager = renderer.getManager(fileMenu); |
| 498 |
assertNotNull("No file menu?", fileManager); |
| 499 |
|
| 500 |
assertEquals(4, fileManager.getSize()); |
| 501 |
|
| 502 |
IContributionItem mmcItem = fileManager.getItems()[3]; |
| 503 |
assertEquals("mmc.item1", mmcItem.getId()); |
| 504 |
assertEquals("before the first show, we have no context to evaluate", |
| 505 |
true, mmcItem.isVisible()); |
| 506 |
|
| 507 |
MenuManager manager = renderer.getManager(menuBar); |
| 508 |
manager.updateAll(true); |
| 509 |
Menu fileWidget = fileManager.getMenu(); |
| 510 |
assertNotNull(fileWidget); |
| 511 |
|
| 512 |
Event show = new Event(); |
| 513 |
show.widget = fileWidget; |
| 514 |
show.type = SWT.Show; |
| 515 |
|
| 516 |
Event hide = new Event(); |
| 517 |
hide.widget = fileWidget; |
| 518 |
hide.type = SWT.Hide; |
| 519 |
|
| 520 |
fileWidget.notifyListeners(SWT.Show, show); |
| 521 |
|
| 522 |
assertEquals("after the first show, it should not be visible", false, |
| 523 |
mmcItem.isVisible()); |
| 524 |
|
| 525 |
fileWidget.notifyListeners(SWT.Hide, hide); |
| 526 |
|
| 527 |
appContext.set("mmc1", Boolean.TRUE); |
| 528 |
|
| 529 |
assertEquals("Change should not show up until next show", false, |
| 530 |
mmcItem.isVisible()); |
| 531 |
|
| 532 |
fileWidget.notifyListeners(SWT.Show, show); |
| 533 |
|
| 534 |
assertEquals(true, mmcItem.isVisible()); |
| 535 |
|
| 536 |
fileWidget.notifyListeners(SWT.Hide, hide); |
| 537 |
|
| 538 |
appContext.remove("mmc1"); |
| 539 |
|
| 540 |
fileWidget.notifyListeners(SWT.Show, show); |
| 541 |
|
| 542 |
assertEquals(false, mmcItem.isVisible()); |
| 543 |
|
| 544 |
fileWidget.notifyListeners(SWT.Hide, hide); |
| 444 |
} |
545 |
} |
| 445 |
|
546 |
|
| 446 |
public void XXXtestMenuBarVisibility() throws Exception { |
547 |
public void testMenuBarVisibility() throws Exception { |
| 447 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
548 |
MWindow window = BasicFactoryImpl.eINSTANCE.createWindow(); |
| 448 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
549 |
MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu(); |
| 449 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
550 |
menuBar.setElementId("org.eclipse.ui.main.menu"); |
|
Link Here
|
| 478 |
wb = new E4Workbench(window, appContext); |
579 |
wb = new E4Workbench(window, appContext); |
| 479 |
wb.createAndRunUI(window); |
580 |
wb.createAndRunUI(window); |
| 480 |
|
581 |
|
|
|
582 |
MenuManagerRenderer renderer = getRenderer(appContext, menuBar); |
| 583 |
MenuManager manager = renderer.getManager(menuBar); |
| 584 |
manager.updateAll(true); |
| 585 |
|
| 586 |
assertEquals(2, manager.getSize()); |
| 587 |
|
| 588 |
MenuManager vanishManager = (MenuManager) manager.getItems()[1]; |
| 589 |
assertEquals("vanish", vanishManager.getId()); |
| 590 |
|
| 591 |
assertFalse(vanishManager.isVisible()); |
| 592 |
assertNull(vanishManager.getMenu()); |
| 593 |
|
| 594 |
appContext.set("mmc1", Boolean.TRUE); |
| 595 |
|
| 596 |
assertTrue(vanishManager.isVisible()); |
| 597 |
assertNotNull(vanishManager.getMenu()); |
| 598 |
|
| 599 |
appContext.remove("mmc1"); |
| 600 |
|
| 601 |
assertFalse(vanishManager.isVisible()); |
| 602 |
Menu vanishMenu = vanishManager.getMenu(); |
| 603 |
if (vanishMenu != null) { |
| 604 |
assertTrue(vanishMenu.isDisposed()); |
| 605 |
} |
| 606 |
|
| 607 |
appContext.set("mmc1", Boolean.TRUE); |
| 608 |
|
| 609 |
assertTrue(vanishManager.isVisible()); |
| 610 |
assertNotNull(vanishManager.getMenu()); |
| 611 |
assertFalse(vanishManager.getMenu().isDisposed()); |
| 481 |
} |
612 |
} |
| 482 |
|
613 |
|
| 483 |
private MMenuContribution createContribution(boolean withVisibleWhen) { |
614 |
private MMenuContribution createContribution(boolean withVisibleWhen) { |
|
Link Here
|
| 537 |
application.getMenuContributions().add(mmc); |
668 |
application.getMenuContributions().add(mmc); |
| 538 |
} |
669 |
} |
| 539 |
|
670 |
|
| 540 |
MenuRenderer getRenderer(IEclipseContext context, MUIElement element) { |
671 |
private MenuManagerRenderer getRenderer(IEclipseContext context, |
|
|
672 |
MUIElement element) { |
| 541 |
IRendererFactory rendererFactory = context.get(IRendererFactory.class); |
673 |
IRendererFactory rendererFactory = context.get(IRendererFactory.class); |
| 542 |
AbstractPartRenderer renderer = rendererFactory.getRenderer(element, |
674 |
AbstractPartRenderer renderer = rendererFactory.getRenderer(element, |
| 543 |
null); |
675 |
null); |
| 544 |
assertEquals(MenuRenderer.class, renderer.getClass()); |
676 |
assertEquals(MenuManagerRenderer.class, renderer.getClass()); |
| 545 |
return (MenuRenderer) renderer; |
677 |
return (MenuManagerRenderer) renderer; |
| 546 |
} |
678 |
} |
| 547 |
} |
679 |
} |