private void restore(final CaseManagementShapeView ghost) { state.getOriginalParent().ifPresent(originalParent -> state.getOriginalIndex().ifPresent(originalIndex -> restore(ghost, originalParent, originalIndex) ) ); }
@Override public boolean accept() { if (null == getParent() || getParent() instanceof WiresLayer) { return false; } if (!(state.getOriginalParent().isPresent() || state.getOriginalIndex().isPresent())) { return false; } // Execute. return getWiresManager() .getContainmentAcceptor() .acceptContainment(getParent(), new WiresShape[]{getShape()}); }
@Override public boolean acceptContainment(final WiresContainer wiresContainer, final WiresShape[] wiresShapes) { if (state.getGhost().isPresent() && containmentAllowed(wiresContainer, wiresShapes)) { final CaseManagementShapeView container = (CaseManagementShapeView) wiresContainer; final CaseManagementShapeView ghost = state.getGhost().get(); final int index = container.getIndex(ghost); if (index >= 0) { final OptionalInt newIndex = OptionalInt.of(index); final Optional<WiresContainer> originalContainer = state.getOriginalParent(); final OptionalInt originalIndex = state.getOriginalIndex(); final CommandResult<CanvasViolation> result = getCommandManager().execute(getCanvasHandler(), makeAddMutationCommand(wiresShapes[0], wiresContainer, newIndex, originalContainer, originalIndex)); return !CommandUtils.isError(result); } } return false; }
@Before public void setup() { layer = spy(new Layer()); final Group shapeGroup = mock(Group.class); when(shapeGroup.getLayer()).thenReturn(layer); when(shape.getGroup()).thenReturn(shapeGroup); when(shape.getWiresManager()).thenReturn(wiresManager); doReturn(ghost).when(shape).getGhost(); when(wiresManager.getContainmentAcceptor()).thenReturn(containmentAcceptor); when(parentPickerControl.getPickerOptions()).thenReturn(PICKER_OPTIONS); when(parentPickerControl.getShapeLocationControl()).thenReturn(shapeLocationControl); when(parentPickerControl.getIndex()).thenReturn(index); when(containmentControl.getParentPickerControl()).thenReturn(parentPickerControl); when(containmentControl.getShape()).thenReturn(shape); when(containmentControl.getParent()).thenReturn(parent); final NFastArrayList<WiresShape> children = new NFastArrayList<>(); children.add(shape); children.add(ghost); when(parent.getChildShapes()).thenReturn(children); when(parent.getLayoutHandler()).thenReturn(parentLayoutHandler); when(parent.getIndex(eq(shape))).thenReturn(0); when(parent.getGroup()).thenReturn(new Group()); when(state.getGhost()).thenReturn(Optional.of(ghost)); when(state.getOriginalParent()).thenReturn(Optional.of(parent)); when(state.getOriginalIndex()).thenReturn(OptionalInt.of(0)); control = new CaseManagementContainmentControl(containmentControl, state); }