⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mabstracttextwindow.java

📁 httptunnel.jar httptunnel java 源码
💻 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.custom.*;
import org.eclipse.swt.layout.*;

import java.io.*;
import java.util.*;

import net.jumperz.gui.*;
import net.jumperz.app.MDoorman.*;
import net.jumperz.util.*;
import net.jumperz.net.*;

public abstract class MAbstractTextWindow
extends MWindow
{
public static final int WINDOW_STYLE = SWT.MAX | SWT.MIN | SWT.RESIZE;

protected StyledText text;
protected Button sendButton, disconnectButton;
protected Menu bar, editDropMenu, fileDropMenu, breakDropMenu;
protected MenuItem editCascadeItem, fileCascadeItem, breakCascadeItem, selectAllItem, cutItem, copyItem, pasteItem, saveItem, clItem;
protected Map menuBreakMap;

protected abstract void updateGui();
protected abstract void onSendButtonClick();
protected abstract void onDisconnectButtonClick();
protected abstract MHttpData getHttpData( byte[] buffer ) throws IOException;

protected int type;
// --------------------------------------------------------------------------------
public MAbstractTextWindow( String windowName, Shell shell )
{
super( windowName, shell );
}
// --------------------------------------------------------------------------------
protected final void init2()
{
windowValue = new int[]{ 200, 300, 100, 500 };

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, -37 );
text = new StyledText( shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL );
text.addListener( SWT.Selection, this );
text.addListener( SWT.Modify, this );
text.setLayoutData( d1 );

FormData d2 = new FormData( 65, 25 );
d2.right = new FormAttachment( 100, -80 );
d2.bottom = new FormAttachment( 100, -5 );
sendButton = new Button( shell, SWT.PUSH );
sendButton.setLayoutData( d2 );
sendButton.setText( "&Send" );
sendButton.setEnabled( false );
sendButton.addListener( SWT.Selection, this );

FormData d3 = new FormData( 65, 25 );
d3.right = new FormAttachment( 100, -10 );
d3.bottom = new FormAttachment( 100, -5 );
disconnectButton = new Button( shell, SWT.PUSH );
disconnectButton.setLayoutData( d3 );
disconnectButton.setText( "&Disconnect" );
disconnectButton.setEnabled( false );
disconnectButton.addListener( SWT.Selection, this );

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 );

saveItem = new MenuItem( fileDropMenu, SWT.PUSH );
saveItem.setText( "&Save As\tCtrl+S" );
saveItem.setAccelerator( SWT.CTRL + 'S' );

editCascadeItem = new MenuItem( bar, SWT.CASCADE );
editCascadeItem.setText( "&Edit" );

editDropMenu = new Menu( shell, SWT.DROP_DOWN );
editCascadeItem.setMenu( editDropMenu );

copyItem = new MenuItem( editDropMenu, SWT.PUSH );
copyItem.setText( "&Copy\tCtrl+C" );
copyItem.setAccelerator( SWT.CTRL + 'C' );

pasteItem = new MenuItem( editDropMenu, SWT.PUSH );
pasteItem.setText( "&Paste\tCtrl+V" );
pasteItem.setAccelerator( SWT.CTRL + 'V' );

cutItem = new MenuItem( editDropMenu, SWT.PUSH );
cutItem.setText( "Cu&t\tCtrl+X" );
cutItem.setAccelerator( SWT.CTRL + 'X' );

new MenuItem( editDropMenu, SWT.SEPARATOR );

selectAllItem = new MenuItem( editDropMenu, SWT.PUSH );
selectAllItem.setText( "Select &All\tCtrl+A" );
selectAllItem.setAccelerator( SWT.CTRL + 'A' );

new MenuItem( editDropMenu, SWT.SEPARATOR );

clItem = new MenuItem( editDropMenu, SWT.PUSH );
clItem.setText( "&Set Content-Length" );

breakCascadeItem = new MenuItem( bar, SWT.CASCADE );
breakCascadeItem.setText( "&Break" );

breakDropMenu = new Menu( shell, SWT.DROP_DOWN );
breakCascadeItem.setMenu( breakDropMenu );

MSwtUtil.addListenerToMenuItems( fileDropMenu, this );
MSwtUtil.addListenerToMenuItems( editDropMenu, this );
MSwtUtil.addListenerToMenuItems( breakDropMenu, this );


menuBreakMap = new HashMap();
/*
Font font = new Font( doorman.display, "MS UI Gothic", 10, SWT.NORMAL );
text.setFont(font);
*/

init3();
setBreakMenu();
updateMenus();
}
//--------------------------------------------------------------------------------
public void setBreakMenu()
{
MSwtUtil.removeMenuItems( breakDropMenu );

java.util.List l = doorman.breakList;
for( int i = 0; i < l.size(); ++i )
	{
	MBreak _break = ( MBreak )l.get( i );
	if( _break.getType() == type )
		{
		MenuItem m = new MenuItem( breakDropMenu, SWT.CHECK );
		m.setText( _break.getName() );
		m.setSelection( _break.getEnabled() );
		m.addListener( SWT.Selection, this );
		menuBreakMap.put( m, _break );
		}
	}
}
// --------------------------------------------------------------------------------
public String getText()
{
return text.getText();
}
// --------------------------------------------------------------------------------
public void setText( String s )
{
text.setText( s );
}
// --------------------------------------------------------------------------------
public void setFont( Font font )
{
text.setFont( font );
}
// --------------------------------------------------------------------------------
protected void init3()
{
}
// --------------------------------------------------------------------------------
protected final void handleEvent2( Event event )
{
if( event.widget == sendButton )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onSendButtonClick();
			break;
		}
	}
else if( event.widget == disconnectButton )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onDisconnectButtonClick();
			break;
		}
	}
else if( event.widget == selectAllItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onSelectAllClick();
			break;
		}
	}
else if( event.widget == cutItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onCutClick();
			break;
		}
	}
else if( event.widget == copyItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onCopyClick();
			break;
		}
	}
else if( event.widget == pasteItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onPasteClick();
			break;
		}
	}
else if( event.widget == saveItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onSaveClick();
			break;
		}
	}
else if( event.widget == clItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onClClick();
			break;
		}
	}
else if( event.widget == text )
	{
	switch( event.type )
		{
		case SWT.Selection:
			updateMenus();
			break;
		case SWT.Modify:
			updateMenus();
			break;
		}
	}
else if( menuBreakMap.containsKey( event.widget ) )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onBreakMenuSelect( event.widget );
			break;
		}
	}

handleEvent3( event );
}
//--------------------------------------------------------------------------------
private void onBreakMenuSelect( Widget menu )
{
MBreak _break = ( MBreak )menuBreakMap.get( menu );
_break.setEnabled( !_break.getEnabled() );
//doorman.optionWindow.updateBreakTable();
}
// --------------------------------------------------------------------------------
private void onSaveClick()
{
MBaseSession selectedSession = doorman.selectedSession;
if( selectedSession == null )
	{
	return;
	}

String fileName = doorman.saveFile();
if( fileName == null )
	{
	return;
	}

try
	{
	MStringUtil.saveStringToFile( text.getText(), fileName, doorman.getEnc() );
	}
catch( IOException e )
	{
	doorman.notifyException( e );
	}
}
// --------------------------------------------------------------------------------
private void onClClick()
{
try
	{
	byte[] buffer = text.getText().getBytes( doorman.getEnc() );
	MHttpData httpData = getHttpData( buffer );
	setContentLength( httpData, buffer );
	}
catch( IOException ignored )
	{
	}
}
// --------------------------------------------------------------------------------
private void setContentLength( MHttpData httpData, byte[] buffer )
throws IOException
{
if( httpData.hasBody() )
	{
	if( httpData.headerExists( "Content-Length" ) )
		{
		int total = buffer.length;
		int headerLength = httpData.getHeader().length;
		int contentLength = total - headerLength;
		httpData.setHeaderValue( "Content-Length", Integer.toString( contentLength ) );
		
		byte[] bodyBuffer = new byte[ contentLength ];
		System.arraycopy( buffer, headerLength, bodyBuffer, 0, contentLength );
		httpData.setBody( bodyBuffer );
		text.setText( MStringUtil.byteArrayToString( httpData.toByteArray(), doorman.getEnc() ) );
		}
	}
}
// --------------------------------------------------------------------------------
protected void handleEvent3( Event event )
{
}
// --------------------------------------------------------------------------------
private void onPasteClick()
{
text.paste();
}
// --------------------------------------------------------------------------------
private void onCopyClick()
{
text.copy();
}
// --------------------------------------------------------------------------------
private void onCutClick()
{
text.cut();
}
// --------------------------------------------------------------------------------
protected void onSelectAllClick()
{
text.selectAll();
updateMenus();
}
//--------------------------------------------------------------------------------
protected void updateMenus()
{
boolean textExists = text.getText().length() > 0;
boolean textSelected = text.getSelectionText().length() > 0;

copyItem.setEnabled( textSelected );
cutItem.setEnabled( textSelected );
selectAllItem.setEnabled( textExists );
clItem.setEnabled( textExists );
saveItem.setEnabled( textExists );
}
// --------------------------------------------------------------------------------
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -