package org.trianacode.gui.desktop.frames;
import org.trianacode.gui.desktop.DesktopView;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.beans.PropertyVetoException;
/**
* @author Andrew Harrison
* @version 1.0.0 Nov 12, 2010
*/
public class CascadeAction extends AbstractAction {
private FramesManager desk;
private int offX;
private int offY;
public CascadeAction(FramesManager desk, int offX, int offY) {
super("Cascade Frames");
this.desk = desk;
this.offX = offX;
this.offY = offY;
}
public void actionPerformed(ActionEvent ev) {
DesktopView[] allframes = desk.getViews();
int count = allframes.length;
if (count == 0) return;
for (int i = 0; i < count; i++) {
DesktopView view = allframes[i];
if (view instanceof FramesView) {
FramesView f = (FramesView) view;
if (!f.isClosed() && f.isIcon()) {
try {
f.setIcon(false);
} catch (PropertyVetoException ignored) {
}
}
f.setBounds(new Rectangle(offX * (i + 1), offY * (i + 1), f.getWidth(), f.getHeight()));
if (i == count - 1) {
desk.setSelected(f, true);
}
}
}
}
}