package jetbrains.mps.samples.componentDependencies.editor; /*Generated by MPS */ import jetbrains.mps.lang.editor.figures.library.NamedBoxFigure; import jetbrains.jetpad.cell.TextCell; import jetbrains.jetpad.values.Color; import jetbrains.jetpad.cell.toView.CellView; import jetbrains.jetpad.model.property.Property; import jetbrains.jetpad.mapper.MapperFactory; import jetbrains.jetpad.mapper.Mapper; import jetbrains.jetpad.mapper.Synchronizers; import jetbrains.jetpad.model.property.WritableProperty; import jetbrains.jetpad.projectional.view.View; import jetbrains.jetpad.projectional.diagram.view.DiagramNodeView; import jetbrains.jetpad.projectional.diagram.base.GridDirection; public class CustomNamedBoxFigure extends NamedBoxFigure { private TextCell myCell = new TextCell(); public CustomNamedBoxFigure() { this(new CustomNamedBoxFigure.CustomNamedBoxFigureMapperFactory()); background().set(Color.LIGHT_YELLOW); } public CustomNamedBoxFigure(CustomNamedBoxFigure.CustomNamedBoxFigureMapperFactory factory) { CellView cellView = new CellView(); myCell.textColor().set(Color.BLACK); myCell.text().set("<<No text>>"); cellView.cell.set(myCell); children().add(cellView); if (factory != null) { factory.createMapper(this).attachRoot(); } } public Property<String> idText() { return myCell.text(); } private static class CustomNamedBoxFigureMapperFactory implements MapperFactory<CustomNamedBoxFigure, CustomNamedBoxFigure> { public Mapper<? extends CustomNamedBoxFigure, ? extends CustomNamedBoxFigure> createMapper(final CustomNamedBoxFigure figure) { return new NamedBoxFigure.NamedBoxFigureMapper<CustomNamedBoxFigure>(figure) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forProperty(figure.parent(), new WritableProperty<View>() { public void set(View parentView) { while (parentView != null) { if (parentView instanceof DiagramNodeView) { ((DiagramNodeView) parentView).setPortsDirection(GridDirection.DOWN); } parentView = parentView.parent().get(); } } })); } }; } } }