package org.korsakow.ide.ui.controller.action;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.korsakow.ide.resources.widget.WidgetModel;
import org.korsakow.ide.ui.controller.action.MoveBackwardsAction.DepthSort;
import org.korsakow.ide.ui.interfacebuilder.InterfaceBuilderMainPanel;
import org.korsakow.ide.ui.interfacebuilder.WidgetCanvasModel;
public class MoveForwardsAction extends AbstractAction
{
private final InterfaceBuilderMainPanel interfBuilder;
public MoveForwardsAction(InterfaceBuilderMainPanel interfBuilder)
{
this.interfBuilder = interfBuilder;
}
@Override
public void performAction()
{
WidgetCanvasModel model = interfBuilder.getCanvas().getModel();
final List<WidgetModel> widgets = model.getWidgets();
List<WidgetModel> selected = new ArrayList<WidgetModel>(model.getSelectedWidgets());
Collections.sort(selected, new DepthSort(widgets));
for (int i = selected.size()-1; i >= 0; --i) {
WidgetModel widget = selected.get(i);
int index = model.indexOfWidget(widget);
if (index+2 > widgets.size())
continue;
if (index+1 < widgets.size() &&
selected.contains(widgets.get(index+1)))
continue; // preserve relative ordering
model.addWidget(index+2, widget);
}
}
}