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