package jetbrains.mps.lang.editor.figures.sandbox; /*Generated by MPS */ import jetbrains.jetpad.projectional.diagram.view.layout.CenterVerticalLayoutView; import jetbrains.mps.lang.editor.diagram.runtime.jetpad.views.MovableContentView; import jetbrains.jetpad.cell.TextCell; import jetbrains.jetpad.projectional.view.RectView; import jetbrains.jetpad.model.property.Property; import jetbrains.jetpad.model.property.ValueProperty; import jetbrains.jetpad.values.Color; import jetbrains.jetpad.cell.toView.CellView; import jetbrains.jetpad.cell.text.TextEditing; import jetbrains.jetpad.geometry.Vector; import jetbrains.jetpad.projectional.view.ViewTraitBuilder; import jetbrains.jetpad.projectional.view.ViewEvents; import jetbrains.jetpad.projectional.view.ViewEventHandler; import jetbrains.jetpad.event.MouseEvent; import jetbrains.jetpad.projectional.view.View; import jetbrains.jetpad.mapper.Mapper; import jetbrains.jetpad.mapper.Synchronizers; public class BlockContentView extends CenterVerticalLayoutView implements MovableContentView { private TextCell myCell = new TextCell(); private RectView myRectView = new RectView(); public Property<Boolean> isClicked = new ValueProperty<Boolean>(false); public BlockContentView() { super(false); background().set(Color.BLUE); CellView cellView = new CellView(); cellView.background().set(Color.LIGHT_BLUE); myCell.addTrait(TextEditing.textEditing()); cellView.cell.set(myCell); children().add(cellView); children().add(myRectView); myRectView.background().set(Color.CYAN); myRectView.dimension().set(new Vector(100, 20)); myRectView.addTrait(new ViewTraitBuilder().on(ViewEvents.MOUSE_PRESSED, new ViewEventHandler<MouseEvent>() { @Override public void handle(View view, MouseEvent e) { isClicked.set(!(isClicked.get())); } }).build()); RectView bottomRect = new RectView(); bottomRect.background().set(Color.GRAY); bottomRect.dimension().set(new Vector(100, 30)); children().add(bottomRect); initSynchronizers(); } private void initSynchronizers() { new Mapper<BlockContentView, BlockContentView>(this, this) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forProperty(isClicked, new Runnable() { public void run() { if (isClicked.get()) { myRectView.background().set(Color.DARK_GREEN); } else { myRectView.background().set(Color.CYAN); } } })); } }.attachRoot(); } public Property<String> text() { return myCell.text(); } }