FeatureEditor featureEditor = (FeatureEditor) getContext().getValue(de.FeatureModellingTool.GraphicalEditor.GraphicalEditor.FEATURE_EDITOR);
FeatureModelEditor featureModelEditor = (FeatureModelEditor) getContext().getValue(de.FeatureModellingTool.GraphicalEditor.GraphicalEditor.FEATURE_MODEL_EDITOR);
de.FeatureModellingTool.Pattern.FeatureModelHelper.pasteFeatureTree(root, patternSelection.template.getFeatureModel(), patternSelection.template.getConstraintModel(), feature , featureModel, constraintModel, editorArea.getCurrentView(), featureModelEditor , featureEditor , htCount , nameMap , figureMap);
AutoLayout_Feature layout = new AutoLayout_Feature();
for (Iterator<String> itFeature=figureMap.keySet().iterator() ; itFeature.hasNext() ; ) {
String featureID = itFeature.next();
Feature desFeature = featureModel.getFeature(featureID);
Figure desFigure = figureMap.get(featureID);
layout.addFeature(desFeature, desFigure.size().width, desFigure.size().height);
}
layout.caculateLayout();
Figure rootFigure = figureMap.get(feature.getID());
int off_x = rootFigure.getDisplayBox().x - layout.getFeatureLayout(feature).x;
int root_off_x;
if (off_x<0) {
root_off_x = -1 * off_x;
off_x = 0;
} else {
root_off_x = 0;
}
int off_y = rootFigure.getDisplayBox().y;
for (Iterator<String> itFeature=figureMap.keySet().iterator() ; itFeature.hasNext() ; ) {
String featureID = itFeature.next();
if (featureID.equals(feature.getID())) {
rootFigure.moveBy(root_off_x, 0);
} else {
Feature desFeature = featureModel.getFeature(featureID);
Figure desFigure = figureMap.get(featureID);
FeatureLayout flo = layout.getFeatureLayout(desFeature);
desFigure.moveBy(flo.x + off_x, flo.y + off_y);
}
}
}
}