improve paste

This commit is contained in:
bancika
2011-01-15 20:41:31 +00:00
parent 03444c3146
commit e9bcae11e3
3 changed files with 11 additions and 3 deletions
@@ -273,7 +273,7 @@ public interface IPlugInPort {
*
* @param components
*/
void addComponents(List<IDIYComponent<?>> components);
void pasteComponents(List<IDIYComponent<?>> components);
/**
* Deletes all the selected components from the project.
@@ -175,7 +175,7 @@ public class ClipboardManager implements IPlugIn, ClipboardOwner {
try {
List<IDIYComponent<?>> components = (List<IDIYComponent<?>>) clipboard
.getData(ComponentSelection.listFlavor);
plugInPort.addComponents(cloner.deepClone(components));
plugInPort.pasteComponents(cloner.deepClone(components));
} catch (Exception ex) {
LOG.error("Coule not paste.", ex);
}
@@ -796,16 +796,24 @@ public class Presenter implements IPlugInPort {
}
@Override
public void addComponents(List<IDIYComponent<?>> components) {
public void pasteComponents(List<IDIYComponent<?>> components) {
LOG.info(String.format("addComponents(%s)", components));
Project oldProject = cloner.deepClone(currentProject);
for (IDIYComponent<?> component : components) {
for (int i = 0; i < component.getControlPointCount(); i++) {
Point point = component.getControlPoint(i);
point.translate(currentProject.getGridSpacing().convertToPixels(), currentProject
.getGridSpacing().convertToPixels());
}
addComponent(component, componentTypeMap.get(component.getClass().getName()));
}
selectedComponents.clear();
selectedComponents.addAll(components);
messageDispatcher.dispatchMessage(EventType.PROJECT_MODIFIED, oldProject, cloner
.deepClone(currentProject), "Add");
this.modified = true;
fireFileStatusChanged();
fireSelectionChanged();
messageDispatcher.dispatchMessage(EventType.REPAINT);
}