package com.jds.jn.gui.panels;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.accessibility.AccessibleContext;
import javax.swing.JComponent;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.jds.jn.gui.panels.viewpane.FilterPane;
import com.jds.jn.gui.panels.viewpane.HiddenPanel;
import com.jds.jn.gui.panels.viewpane.InfoPane;
import com.jds.jn.gui.panels.viewpane.PacketListPane;
import com.jds.jn.gui.panels.viewpane.packetlist.CryptedPacketListPane;
import com.jds.jn.gui.panels.viewpane.packetlist.DecryptedPacketListPane;
import com.jds.jn.gui.panels.viewpane.packetlist.UnknownPacketListPane;
import com.jds.jn.session.Session;
import com.jds.jn.util.Bundle;
/**
* @author VISTALL
* @date 17:15:02/26.08.2009
*/
public class ViewPane extends JTabbedPane
{
public Session _session;
private PacketListPane _packetListPane;
private FilterPane _filterPane;
private InfoPane _infoPane;
public ViewPane(Session session)
{
_session = session;
setTabPlacement(LEFT);
_infoPane = new InfoPane();
_filterPane = new FilterPane(this);
_packetListPane = new PacketListPane(this);
addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent e)
{
((HiddenPanel)getSelectedComponent()).refresh();
}
});
registerKeyboardAction(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
setSelectedComponent(_packetListPane);
_packetListPane.setSelectedPanel(_packetListPane.getDecryptedPacketListPane());
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW);
registerKeyboardAction(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
setSelectedComponent(_packetListPane);
_packetListPane.setSelectedPanel(_packetListPane.getCryptedPacketListPane());
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW);
registerKeyboardAction(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
setSelectedComponent(_packetListPane);
_packetListPane.setSelectedPanel(_packetListPane.getUnknownPacketListPane());
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW);
}
public void drawThis()
{
_filterPane.drawThis();
addTab("PacketList", _packetListPane, true);
addTab("Filter", _filterPane, true);
addTab("Info", _infoPane, true);
}
public void addTab(String title, HiddenPanel pane, boolean bundle)
{
pane.setHidden(false);
addTab(bundle ? Bundle.getString(title) : title, pane);
}
public void removeTab(HiddenPanel tab)
{
AccessibleJTabbedPane p = (AccessibleJTabbedPane)getAccessibleContext();
int index = -1;
for(int i = 0; i < p.getAccessibleChildrenCount(); i++)
{
//JTabbedPane.Page
AccessibleContext child = (AccessibleContext)p.getAccessibleChild(i);
if(child.getAccessibleChild(0) == tab)
index = i;
}
if(index == -1)
throw new IllegalArgumentException();
removeTabAt(index);
tab.setHidden(true);
}
public void close()
{
}
public Session getSession()
{
return _session;
}
public DecryptedPacketListPane getDecryptedPacketListPane()
{
return _packetListPane.getDecryptedPacketListPane();
}
public CryptedPacketListPane getCryptedPacketListPane()
{
return _packetListPane.getCryptedPacketListPane();
}
public UnknownPacketListPane getUnknownPacketListPane()
{
return _packetListPane.getUnknownPacketListPane();
}
public FilterPane getFilterPane()
{
return _filterPane;
}
public void updateInfo(Session session)
{
_infoPane.update(session);
}
public void actionEnable(boolean e)
{
setEnabled(e);
_packetListPane.setEnabled(e);
}
public PacketListPane getPacketListPane()
{
return _packetListPane;
}
public InfoPane getInfoPane()
{
return _infoPane;
}
}