/*******************************************************************************
* Copyright (c) 2016 itemis AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alexander Nyßen (itemis AG) - initial API and implementation
*
*******************************************************************************/
package org.eclipse.gef.mvc.examples.logo.parts;
import org.eclipse.gef.mvc.fx.parts.IContentPart;
import org.eclipse.gef.mvc.fx.parts.IVisualPart;
import org.eclipse.gef.mvc.fx.parts.LayeredRootPart;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.layout.VBox;
/**
* A specific root part for the palette viewer.
*
* @author Alexander Nyßen
*/
public class PaletteRootPart extends LayeredRootPart {
@Override
protected Group createContentLayer() {
Group contentLayer = super.createContentLayer();
VBox vbox = new VBox();
vbox.setPickOnBounds(true);
// define padding and spacing
vbox.setPadding(new Insets(10));
vbox.setSpacing(10d);
// fixed at top/right position
vbox.setAlignment(Pos.TOP_LEFT);
contentLayer.getChildren().add(vbox);
return contentLayer;
}
@Override
protected void doAddChildVisual(IVisualPart<? extends Node> child, int index) {
if (child instanceof IContentPart) {
int contentLayerIndex = 0;
for (int i = 0; i < index; i++) {
if (i < getChildrenUnmodifiable().size() && getChildrenUnmodifiable().get(i) instanceof IContentPart) {
contentLayerIndex++;
}
}
((VBox) getContentLayer().getChildren().get(0)).getChildren().add(contentLayerIndex,
new Group(child.getVisual()));
} else {
super.doAddChildVisual(child, index);
}
}
@Override
protected void doRemoveChildVisual(IVisualPart<? extends Node> child, int index) {
if (child instanceof IContentPart) {
((VBox) getContentLayer().getChildren().get(0)).getChildren().remove(index);
} else {
super.doRemoveChildVisual(child, index);
}
}
}