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();
}
}