package com.traxel.lumbermill.desk;
import com.traxel.lumbermill.desk.FrameControl.Cascade;
import com.traxel.lumbermill.desk.FrameControl.MaximizeFrame;
import com.traxel.lumbermill.desk.FrameControl.MinimizeAll;
import com.traxel.lumbermill.desk.FrameControl.RestoreAll;
import com.traxel.lumbermill.desk.FrameControl.TileHorizontal;
import com.traxel.lumbermill.desk.FrameControl.TileVertical;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.Action;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
public class extends JMenu {
public (final MillDesktop desktop) {
super("Windows");
final Action action;
add(new Cascade(desktop));
add(new TileHorizontal(desktop));
add(new TileVertical(desktop));
add(new MinimizeAll(desktop));
add(new RestoreAll(desktop));
addSeparator();
}
public void addMillFrame(
final MillDesktop desktop,
final MillFrame frame) {
final MaximizeFrame maximize;
final JMenuItem menuItem;
final FrameControlRemover remover;
maximize = new MaximizeFrame(desktop, frame);
menuItem = add(maximize);
new TitleChangeListener(frame, menuItem);
new FrameControlRemover(frame, menuItem);
}
private static final String PROPERTY = JInternalFrame.TITLE_PROPERTY;
private final JInternalFrame FRAME;
private final JMenuItem MENU_ITEM;
public (final JInternalFrame frame, final JMenuItem menuItem) {
FRAME = frame;
MENU_ITEM = menuItem;
FRAME.addPropertyChangeListener(this);
}
@Override
if (FRAME.equals(e.getSource())
&& PROPERTY.equals(e.getPropertyName())) {
MENU_ITEM.setText(e.getNewValue().toString());
}
}
}
private final JMenuItem MENU_ITEM;
public (final JInternalFrame frame, final JMenuItem menuItem) {
MENU_ITEM = menuItem;
frame.addInternalFrameListener(this);
}
@Override
remove(MENU_ITEM);
}
}
}