src/main/java/org/pdf/forms/gui/commands/AlignBottomCommand.java
package org.pdf.forms.gui.commands;
import java.awt.*;
import java.util.Set;
import org.pdf.forms.gui.IMainFrame;
import org.pdf.forms.gui.designer.IDesigner;
import org.pdf.forms.gui.properties.PropertyChanger;
import org.pdf.forms.widgets.IWidget;
public class AlignBottomCommand implements Command {
private final IMainFrame mainFrame;
public AlignBottomCommand(final IMainFrame mainFrame) {
this.mainFrame = mainFrame;
}
@Override
public void execute() {
final IDesigner designerPanel = mainFrame.getDesigner();
final Set<IWidget> selectedWidgets = designerPanel.getSelectedWidgets();
alignBottom(selectedWidgets);
PropertyChanger.updateSizeAndPosition(selectedWidgets);
mainFrame.setPropertiesCompound(selectedWidgets);
mainFrame.setPropertiesToolBar(selectedWidgets);
mainFrame.updateHierarchy();
designerPanel.repaint();
}
private void alignBottom(final Set<IWidget> selectedWidgets) {
final int bottomPoint = calculateBottomPoint(selectedWidgets);
for (final IWidget widget: selectedWidgets) {
widget.setY(bottomPoint - widget.getBounds().height);
}
}
private int calculateBottomPoint(final Set<IWidget> widgets) {
int bottomPoint = 0;
for (final IWidget widget: widgets) {
final Rectangle bounds = widget.getBounds();
final int point = bounds.y + bounds.height;
if (point > bottomPoint) {
bottomPoint = point;
}
}
return bottomPoint;
}
}