public void dispose() {
    /*
     * Unregister listeners.
     */
    for (IAttributeEditor editor : this.editors.values()) {
      editor.removeAttributeListener(forwardListener);
    }

    super.dispose();
  }
Exemple #2
0
 @Test
 public void testDispose() {
   final List<Object> disposedWidgets = new ArrayList<Object>();
   DisposeListener disposeListener =
       new DisposeListener() {
         public void widgetDisposed(DisposeEvent evt) {
           disposedWidgets.add(evt.getSource());
         }
       };
   Display display = new Display();
   Composite shell = new Shell(display, SWT.NONE);
   shell.addDisposeListener(disposeListener);
   Button button1 = new Button(shell, SWT.PUSH);
   button1.addDisposeListener(disposeListener);
   // Ensure that dipose removes a widget from its parent and sets isDisposed()
   button1.dispose();
   assertTrue(button1.isDisposed());
   assertFalse(find(shell.getChildren(), button1));
   assertSame(button1, disposedWidgets.get(0));
   // Ensure that dispose may be called more than once
   disposedWidgets.clear();
   button1.dispose();
   assertTrue(button1.isDisposed());
   assertEquals(0, disposedWidgets.size());
   Button button2 = new Button(shell, SWT.PUSH);
   button2.addDisposeListener(disposeListener);
   shell.dispose();
   assertEquals(2, disposedWidgets.size());
   assertSame(shell, disposedWidgets.get(0));
   assertSame(button2, disposedWidgets.get(1));
   assertTrue(shell.isDisposed());
   assertTrue(button2.isDisposed());
   // the assert below may not work in the future since getChildren is
   // checkWidget()-protected
   assertEquals(0, ControlHolder.size(shell));
   assertEquals(0, Display.getCurrent().getShells().length);
   //
   disposedWidgets.clear();
   shell.dispose();
   assertEquals(0, disposedWidgets.size());
   assertTrue(shell.isDisposed());
 }