📄 msessionwindow.java
字号:
catch( ArrayIndexOutOfBoundsException e )
{
break;
}
}
updateGui();
}
catch( IOException e )
{
doorman.notifyException( e );
}
}
// --------------------------------------------------------------------------------
private void saveSessions()
{
saveSessions( true );
//saveSessions( false );
}
// --------------------------------------------------------------------------------
private void saveSessions( boolean gzip )
{
String fileName = doorman.saveFile();
if( fileName == null )
{
return;
}
try
{
XMLEncoder encoder;
if( gzip )
{
encoder = new XMLEncoder( new BufferedOutputStream( new GZIPOutputStream( new FileOutputStream( fileName ) ) ) );
}
else
{
encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream( fileName ) ) );
}
TableItem[] items = sessionTable.getSelection();
int count = items.length;
java.util.List sessionList = new ArrayList();
for( int i = 0; i < count; ++i )
{
MBaseSession session = ( MBaseSession )itemSessionMap.get( items[ i ] );
sessionList.add( session );
}
MSessionWriter writer = new MSessionWriter( sessionList, encoder );
writer.execute();
//doorman.threadPool.addCommand( writer );
}
catch( IOException e )
{
doorman.notifyException( e );
}
}
// --------------------------------------------------------------------------------
private void onSaveResponseItemSelect()
{
save( TYPE_RESPONSE );
}
// --------------------------------------------------------------------------------
private void onSaveResponseHeaderItemSelect()
{
save( TYPE_RESPONSE_HEADER );
}
// --------------------------------------------------------------------------------
private void onSaveResponseBodyItemSelect()
{
save( TYPE_RESPONSE_BODY );
}
// --------------------------------------------------------------------------------
private void onSaveRequestItemSelect()
{
save( TYPE_REQUEST );
}
// --------------------------------------------------------------------------------
private void onSaveRequestHeaderItemSelect()
{
save( TYPE_REQUEST_HEADER );
}
// --------------------------------------------------------------------------------
private void onSaveRequestBodyItemSelect()
{
save( TYPE_REQUEST_BODY );
}
// --------------------------------------------------------------------------------
private void save( int type )
{
try
{
save2( type );
}
catch( IOException e )
{
doorman.notifyException( e );
}
}
// --------------------------------------------------------------------------------
private void save2( int type )
throws IOException
{
int count = sessionTable.getSelectionCount();
if( count < 1 )
{
return;
}
MBaseSession session = ( MBaseSession )itemSessionMap.get( sessionTable.getSelection()[ 0 ] );
byte[] buffer = null;
if( type == TYPE_REQUEST )
{
buffer = session.getRequestByte();
}
else if( type == TYPE_REQUEST_HEADER )
{
MHttpRequest request = getRequest( session.getRequestByte() );
buffer = request.getHeader();
}
else if( type == TYPE_REQUEST_BODY )
{
MHttpRequest request = getRequest( session.getRequestByte() );
if( !request.hasBody() )
{
return;
}
buffer = MStreamUtil.streamToBytes( request.getBodyInputStream() );
}
else if( type == TYPE_RESPONSE )
{
buffer = session.getResponseByte();
}
else if( type == TYPE_RESPONSE_HEADER )
{
MHttpResponse response = getResponse( session.getResponseByte() );
buffer = response.getHeader();
}
else if( type == TYPE_RESPONSE_BODY )
{
MHttpResponse response = getResponse( session.getResponseByte() );
if( !response.hasBody() )
{
return;
}
buffer = MStreamUtil.streamToBytes( response.getBodyInputStream() );
}
if( buffer == null )
{
return;
}
String fileName = doorman.saveFile();
if( fileName == null )
{
return;
}
MStreamUtil.writeByteToFile( buffer, fileName );
}
// --------------------------------------------------------------------------------
private MHttpRequest getRequest( byte[] buffer )
throws IOException
{
MHttpRequest request = new MHttpRequest( new BufferedInputStream( new ByteArrayInputStream( buffer ) ) );
return request;
}
// --------------------------------------------------------------------------------
private MHttpResponse getResponse( byte[] buffer )
throws IOException
{
MHttpResponse Response = new MHttpResponse( new BufferedInputStream( new ByteArrayInputStream( buffer ) ) );
return Response;
}
// --------------------------------------------------------------------------------
private void onCopyUrlItemSelect()
{
int count = sessionTable.getSelectionCount();
if( count < 1 )
{
return;
}
MSwtUtil.copyToClipboard( sessionTable.getSelection()[ 0 ].getText( URL_INDEX ) );
}
// --------------------------------------------------------------------------------
private void onTableColumnResize()
{
MSwtUtil.setTableColumnWidthToProperties( "sessionTable", sessionTable, prop );
}
// --------------------------------------------------------------------------------
protected void onShellResize()
{
// window
saveWindowBounds();
}
// --------------------------------------------------------------------------------
private void onSessionTableSelect()
{
updateGui();
}
// --------------------------------------------------------------------------------
public void updateGui()
{
updateMenus();
int count = sessionTable.getSelectionCount();
if( count == 0 )
{
doorman.selectedSession = null;
}
else if( count == 1 )
{
MBaseSession session = ( MBaseSession )itemSessionMap.get( sessionTable.getSelection()[ 0 ] );
doorman.selectedSession = session;
updateGui( session );
}
else
{
return;
}
doorman.requestWindow.updateGui();
doorman.responseWindow.updateGui();
}
// --------------------------------------------------------------------------------
public void updateGui( MBaseSession session )
{
if( sessionItemMap.containsKey( session ) )
{
TableItem item = ( TableItem )sessionItemMap.get( session );
setMethod( item, session.getMethod() );
setState( item, session.getStateString() );
setStatusCode( item, session.getStatusCode() );
setCSocketString( item, session.getCSocketString() );
setSSocketString( item, session.getSSocketString() );
}
else if( session.getState() != MBaseSession.ERROR )
{
// add to table
TableItem item = new TableItem( sessionTable, SWT.NONE );
setIndex( item, count );
++count;
setTime( item, session.getTime() );
setUrl( item, session.getUri() );
setState( item, session.getStateString() );
setMethod( item, session.getMethod() );
setStatusCode( item, session.getStatusCode() );
setCSocketString( item, session.getCSocketString() );
setSSocketString( item, session.getSSocketString() );
sessionTable.showItem( item );
sessionItemMap.put( session, item );
itemSessionMap.put( item, session );
}
}
// --------------------------------------------------------------------------------
private void setSSocketString( TableItem item, String s )
{
item.setText( SSOCKET_INDEX, s );
}
// --------------------------------------------------------------------------------
private void setCSocketString( TableItem item, String s )
{
item.setText( CSOCKET_INDEX, s );
}
// --------------------------------------------------------------------------------
private void setStatusCode( TableItem item, String statusCode )
{
item.setText( STATUSCODE_INDEX, statusCode );
}
// --------------------------------------------------------------------------------
private void setMethod( TableItem item, String method )
{
item.setText( METHOD_INDEX, method );
}
// --------------------------------------------------------------------------------
private void setState( TableItem item, String state )
{
item.setText( STATE_INDEX, state );
}
// --------------------------------------------------------------------------------
private void setUrl( TableItem item, String url )
{
item.setText( URL_INDEX, url );
}
// --------------------------------------------------------------------------------
private void setTime( TableItem item, String timeStr )
{
item.setText( TIME_INDEX, timeStr );
}
// --------------------------------------------------------------------------------
private void setIndex( TableItem item, int index )
{
item.setText( INDEX_INDEX, Integer.toString( index ) );
}
// --------------------------------------------------------------------------------
public void setFont( Font font )
{
sessionTable.setFont( font );
int count = sessionTable.getSelectionCount();
if( count == 1 )
{
TableItem item = sessionTable.getSelection()[ 0 ];
sessionTable.showItem( item );
}
}
// --------------------------------------------------------------------------------
private void updateMenus()
{
Table table = sessionTable;
int count = table.getSelectionCount();
boolean oneItemSelected = ( count == 1 );
boolean itemSelected = ( count > 0 );
boolean multiItemSelected = ( count > 1 );
boolean itemExists = ( table.getItemCount() > 0 );
saveSessionItem.setEnabled( itemSelected );
removeItem.setEnabled( itemSelected );
saveRequestItem.setEnabled( oneItemSelected );
saveRequestHeaderItem.setEnabled( oneItemSelected );
saveRequestBodyItem.setEnabled( oneItemSelected );
saveResponseItem.setEnabled( oneItemSelected );
saveResponseHeaderItem.setEnabled( oneItemSelected );
saveResponseBodyItem.setEnabled( oneItemSelected );
copyUrlItem.setEnabled( oneItemSelected );
selectAllItem.setEnabled( itemExists );
}
// --------------------------------------------------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -