📄 msessionwindow.java
字号:
package net.jumperz.app.MDoorman.windows;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import java.beans.*;
import java.io.*;
import java.util.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.net.*;
import net.jumperz.app.MDoorman.*;
import net.jumperz.util.*;
import net.jumperz.gui.*;
import net.jumperz.net.*;
public class MSessionWindow
extends MWindow
{
private static final String WINDOW_NAME = "HTTP Sessions";
private static final int WINDOW_STYLE = SWT.MAX | SWT.MIN | SWT.RESIZE;
private Table sessionTable;
private Map sessionItemMap = new HashMap();
private Map itemSessionMap = new HashMap();
private int count = 0;
private Menu bar, editDropMenu, fileDropMenu;
private MenuItem editCascadeItem, fileCascadeItem, saveRequestItem, saveRequestHeaderItem, removeItem, saveRequestBodyItem, saveResponseItem, saveResponseHeaderItem, saveResponseBodyItem, copyUrlItem, debugItem, saveSessionItem, loadSessionItem, selectAllItem;
private static final int TYPE_REQUEST = 0;
private static final int TYPE_REQUEST_HEADER = 1;
private static final int TYPE_REQUEST_BODY = 2;
private static final int TYPE_RESPONSE = 3;
private static final int TYPE_RESPONSE_HEADER = 4;
private static final int TYPE_RESPONSE_BODY = 5;
private static final int INDEX_INDEX = 0;
private static final int TIME_INDEX = 1;
private static final int URL_INDEX = 2;
private static final int STATE_INDEX = 3;
private static final int METHOD_INDEX = 4;
private static final int STATUSCODE_INDEX = 5;
private static final int SSOCKET_INDEX = 6;
private static final int CSOCKET_INDEX = 7;
// --------------------------------------------------------------------------------
public MSessionWindow()
{
super( WINDOW_NAME, new Shell( MDoorman.getInstance().mainShell, WINDOW_STYLE ) );
}
// --------------------------------------------------------------------------------
protected void init2()
{
windowValue = new int[]{ 200, 300, 100, 400 };
bar = new Menu( shell, SWT.BAR );
shell.setMenuBar( bar );
fileCascadeItem = new MenuItem( bar, SWT.CASCADE );
fileCascadeItem.setText( "&File" );
fileDropMenu = new Menu( shell, SWT.DROP_DOWN );
fileCascadeItem.setMenu( fileDropMenu );
saveSessionItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveSessionItem.setText( "Sa&ve Sessions\tCtrl+S" );
saveSessionItem.setAccelerator( SWT.CTRL + 'S' );
loadSessionItem = new MenuItem( fileDropMenu, SWT.PUSH );
loadSessionItem.setText( "&Load Sessions\tCtrl+O" );
loadSessionItem.setAccelerator( SWT.CTRL + 'O' );
new MenuItem( fileDropMenu, SWT.SEPARATOR );
saveRequestItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveRequestItem.setText( "Save Re&quest As" );
saveRequestHeaderItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveRequestHeaderItem.setText( "Save Request Header As" );
saveRequestBodyItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveRequestBodyItem.setText( "Save Request Body As" );
new MenuItem( fileDropMenu, SWT.SEPARATOR );
saveResponseItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveResponseItem.setText( "Save Re&sponse As" );
saveResponseHeaderItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveResponseHeaderItem.setText( "Save Response Header As" );
saveResponseBodyItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveResponseBodyItem.setText( "Save Response Body As" );
if( doorman.getProperties().getBooleanProperty( "debug" ) == true )
{
debugItem = new MenuItem( fileDropMenu, SWT.PUSH );
debugItem.setText( "debug" );
}
editCascadeItem = new MenuItem( bar, SWT.CASCADE );
editCascadeItem.setText( "&Edit" );
editDropMenu = new Menu( shell, SWT.DROP_DOWN );
editCascadeItem.setMenu( editDropMenu );
copyUrlItem = new MenuItem( editDropMenu, SWT.PUSH );
copyUrlItem.setText( "&Copy URL\tCtrl+C" );
copyUrlItem.setAccelerator( SWT.CTRL + 'C' );
selectAllItem = new MenuItem( editDropMenu, SWT.PUSH );
selectAllItem.setText( "&Select All\tCtrl+A" );
selectAllItem.setAccelerator( SWT.CTRL + 'A' );
removeItem = new MenuItem( editDropMenu, SWT.PUSH );
removeItem.setText( "&Remove" );
removeItem.setAccelerator( SWT.DEL );
sessionTable = new Table( shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION );
sessionTable.setHeaderVisible( true );
sessionTable.setLinesVisible( true );
sessionTable.addListener( SWT.Selection, this );
FormData d1 = new FormData();
d1.top = new FormAttachment( 0, 1 );
d1.left = new FormAttachment( 0, 1 );
d1.right = new FormAttachment( 100, -1 );
d1.bottom = new FormAttachment( 100, -1 );
sessionTable.setLayoutData( d1 );
TableColumn column0 = new TableColumn ( sessionTable, SWT.NONE );
column0.setText ( " " );
TableColumn timeColumn = new TableColumn ( sessionTable, SWT.NONE );
timeColumn.setText ( "time" );
TableColumn column1 = new TableColumn ( sessionTable, SWT.NONE );
column1.setText ( "URL" );
TableColumn column2 = new TableColumn ( sessionTable, SWT.NONE );
column2.setText ( "State" );
TableColumn column3 = new TableColumn ( sessionTable, SWT.NONE );
column3.setText ( "Method" );
TableColumn column4 = new TableColumn ( sessionTable, SWT.NONE );
column4.setText ( "SCode" );
TableColumn column5 = new TableColumn ( sessionTable, SWT.NONE );
column5.setText ( "SSocket" );
TableColumn column6 = new TableColumn ( sessionTable, SWT.NONE );
column6.setText ( "CSocket" );
MSwtUtil.addListenerToMenuItems( editDropMenu, this );
MSwtUtil.addListenerToMenuItems( fileDropMenu, this );
MSwtUtil.addListenerToTableColumns( sessionTable, this );
MSwtUtil.getTableColumnWidthFromProperties( "sessionTable", sessionTable, prop );
updateMenus();
}
// --------------------------------------------------------------------------------
protected void handleEvent2( Event event )
{
if( event.widget == sessionTable )
{
switch( event.type )
{
case SWT.Selection:
onSessionTableSelect();
break;
}
}
else if( event.widget == copyUrlItem )
{
switch( event.type )
{
case SWT.Selection:
onCopyUrlItemSelect();
break;
}
}
else if( event.widget == saveRequestItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveRequestItemSelect();
break;
}
}
else if( event.widget == saveRequestHeaderItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveRequestHeaderItemSelect();
break;
}
}
else if( event.widget == saveRequestBodyItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveRequestBodyItemSelect();
break;
}
}
else if( event.widget == saveResponseItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveResponseItemSelect();
break;
}
}
else if( event.widget == saveResponseHeaderItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveResponseHeaderItemSelect();
break;
}
}
else if( event.widget == saveResponseBodyItem )
{
switch( event.type )
{
case SWT.Selection:
onSaveResponseBodyItemSelect();
break;
}
}
else if( event.widget == saveSessionItem )
{
switch( event.type )
{
case SWT.Selection:
saveSessions();
break;
}
}
else if( event.widget == debugItem )
{
switch( event.type )
{
case SWT.Selection:
onDebugSelect();
break;
}
}
else if( event.widget == loadSessionItem )
{
switch( event.type )
{
case SWT.Selection:
loadSessions();
break;
}
}
else if( event.widget == selectAllItem )
{
switch( event.type )
{
case SWT.Selection:
selectAll();
break;
}
}
else if( event.widget == removeItem )
{
switch( event.type )
{
case SWT.Selection:
removeItem();
break;
}
}
else if( MSwtUtil.getTableColumns( sessionTable ).contains( event.widget ) )
{
onTableColumnResize();
}
}
// --------------------------------------------------------------------------------
private void removeItem()
{
TableItem[] items = sessionTable.getSelection();
for( int i = 0; i < items.length; ++i )
{
MBaseSession session = ( MBaseSession )itemSessionMap.get( items[ i ] );
itemSessionMap.remove( items[ i ] );
sessionItemMap.remove( session );
}
sessionTable.remove( sessionTable.getSelectionIndices() );
updateGui();
}
// --------------------------------------------------------------------------------
private void selectAll()
{
sessionTable.selectAll();
updateGui();
}
// --------------------------------------------------------------------------------
private void onDebugSelect()
{
}
// --------------------------------------------------------------------------------
private void loadSessions()
{
String fileName = doorman.loadFile();
if( fileName == null )
{
return;
}
try
{
XMLDecoder decoder = new XMLDecoder( new GZIPInputStream( new FileInputStream( fileName ) ) );
while( true )
{
try
{
MBaseSession session = ( MBaseSession )decoder.readObject();
session.setXmlFlag( false );
session.setState( MBaseSession.LOAD_FROM_FILE );
updateGui( session );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -