/*
* @(#)ArrangeWindowsAction.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.app.action.window;
import org.jhotdraw.util.*;
import org.jhotdraw.gui.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
/**
* Changes the arrangement of an {@link Arrangeable} object.
* <p>
* If you want this behavior in your application, you have to create it
* and put it in your {@code ApplicationModel} in method
* {@link org.jhotdraw.app.ApplicationModel#initApplication}.
*
* FIXME - Register as PropertyChangeListener on Arrangeable.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class ArrangeWindowsAction extends AbstractAction {
private static final long serialVersionUID = 1L;
public static final String VERTICAL_ID = "window.arrangeVertical";
public static final String HORIZONTAL_ID = "window.arrangeHorizontal";
public static final String CASCADE_ID = "window.arrangeCascade";
private Arrangeable arrangeable;
private Arrangeable.Arrangement arrangement;
/** Creates a new instance. */
public ArrangeWindowsAction(Arrangeable arrangeable, Arrangeable.Arrangement arrangement) {
this.arrangeable = arrangeable;
this.arrangement = arrangement;
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.app.Labels");
String labelID;
switch (arrangement) {
case VERTICAL : labelID = VERTICAL_ID; break;
case HORIZONTAL : labelID = HORIZONTAL_ID; break;
case CASCADE :
default :
labelID = CASCADE_ID; break;
}
labels.configureAction(this, labelID);
}
@Override
public void actionPerformed(ActionEvent e) {
arrangeable.setArrangement(arrangement);
}
}