public void container()

in view/src/main/java/jetbrains/jetpad/projectional/view/toAwt/ViewContainerComponent.java [359:430]


  public void container(ViewContainer container) {
    if (myContainer != null) {
      myContainer.setPeer(new NullViewContainerPeer());
      myContainerReg.remove();
      myTimer.stop();
      myContainerReg = null;
    }

    myContainer = container;

    if (myContainer != null) {
      myContainer.setPeer(myPeer);
      validateRoot();
      myContainerReg = new CompositeRegistration(
        myContainer.root().bounds().addHandler(new EventHandler<PropertyChangeEvent<jetbrains.jetpad.geometry.Rectangle>>() {
          @Override
          public void onEvent(PropertyChangeEvent<jetbrains.jetpad.geometry.Rectangle> event) {
            revalidate();
          }
        }),
        myContainer.root().valid().addHandler(new EventHandler<PropertyChangeEvent<Boolean>>() {
          @Override
          public void onEvent(PropertyChangeEvent<Boolean> event) {
            SwingUtilities.invokeLater(new Runnable() {
              @Override
              public void run() {
                validateRoot();
              }
            });
          }
        }),
        myContainer.addListener(new ViewContainerAdapter() {
          @Override
          public void onPropertySet(View view, ViewPropertySpec<?> prop, PropertyChangeEvent<?> event) {
            if (view instanceof TextView && prop == TextView.CARET_VISIBLE) {
              TextView textView = (TextView) view;
              if (textView.caretVisible().get()) {
                myWithCaretVisible.add(textView);
              } else {
                myWithCaretVisible.remove(textView);
              }
            }
          }

          @Override
          public void onViewAttached(View view) {
            if (view instanceof TextView) {
              TextView textView = (TextView) view;
              if (textView.caretVisible().get()) {
                myWithCaretVisible.add(textView);
              }
            }
          }

          @Override
          public void onViewDetached(View view) {
            myDirtyAreas.add(view.bounds().get());
            if (view instanceof TextView) {
              TextView textView = (TextView) view;
              myWithCaretVisible.remove(textView);
            }

            if (myViewPaintHelpers.containsKey(view)) {
              myViewPaintHelpers.get(view).dispose();
              myViewPaintHelpers.remove(view);
            }
          }
        })
      );
      myTimer.start();
    }
  }