package org.lucci.madhoc.gui.runtime;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class WindowShorcutComponent extends RuntimeComponentElement
{
private JLabel windowNameLabel;
private ButtonHandler buttonHandler = new ButtonHandler();
private JDesktopPane desktopPane;
private JPanel buttonPanel;
public WindowShorcutComponent()
{
windowNameLabel = new JLabel("<html>Projection name");
buttonPanel = new JPanel();
JPanel p = new JPanel(new BorderLayout());
p.add(buttonPanel, BorderLayout.CENTER);
p.add(windowNameLabel, BorderLayout.SOUTH);
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
add(p, c);
}
public void stateChanged()
{
}
public void iterationPerformed()
{
}
public JDesktopPane getDesktopPane()
{
return desktopPane;
}
public void setDesktopPane(JDesktopPane desktopPane)
{
this.desktopPane = desktopPane;
JInternalFrame[] frames = desktopPane.getAllFrames();
buttonPanel.setLayout(new GridLayout(2, Math.max(frames.length / 2, 4)));
for (int i = 0; i < frames.length; ++i)
{
JInternalFrame frame = frames[i];
FrameButton b = new FrameButton();
b.setFrame(frame);
b.addActionListener(buttonHandler);
b.addMouseListener(this.buttonHandler);
buttonPanel.add(b);
}
for (int i = frames.length; i < 8; ++i)
{
FrameButton b = new FrameButton();
b.setEnabled(false);
buttonPanel.add(b);
}
getParent().doLayout();
}
private class ButtonHandler implements ActionListener, MouseListener
{
public void actionPerformed(ActionEvent e)
{
FrameButton b = (FrameButton) e.getSource();
desktopPane.setSelectedFrame(b.getFrame());
b.getFrame().moveToFront();
}
public void mouseClicked(MouseEvent arg0)
{
}
public void mouseEntered(MouseEvent e)
{
FrameButton b = (FrameButton) e.getSource();
windowNameLabel.setText("<html>" + b.getFrame().getTitle());
}
public void mouseExited(MouseEvent arg0)
{
windowNameLabel.setText("<html><i>Projection name");
}
public void mousePressed(MouseEvent arg0)
{
}
public void mouseReleased(MouseEvent arg0)
{
}
}
private class FrameButton extends JButton
{
private JInternalFrame frame;
public JInternalFrame getFrame()
{
return frame;
}
public void setFrame(JInternalFrame frame)
{
this.frame = frame;
}
}
}