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

📄 mabstractquerywindow.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.layout.*;
import org.eclipse.swt.custom.*;

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

public abstract class MAbstractQueryWindow
extends MWindow
{
protected Table queryTable;
protected abstract void updateRequestWindow();
protected abstract String getTableName();
protected Menu bar, editDropMenu;
protected MenuItem editCascadeItem, editItem, copyItem, copyNamesItem, copyValuesItem, removeItem, selectAllItem;

public static final int COPY_NAMES	= 0;
public static final int COPY_VALUES	= 1;
public static final int COPY_BOTH	= 2;
// --------------------------------------------------------------------------------
public MAbstractQueryWindow( String windowName, Shell shell )
{
super( windowName, shell );
}
// --------------------------------------------------------------------------------
protected void init2()
{
windowValue = new int[]{ 240, 300, 160, 200 };

bar = new Menu( shell, SWT.BAR );
shell.setMenuBar( bar );

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

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

editItem = new MenuItem( editDropMenu, SWT.PUSH );
editItem.setText( "&Edit Query" );

new MenuItem( editDropMenu, SWT.SEPARATOR );

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

copyNamesItem = new MenuItem( editDropMenu, SWT.PUSH );
copyNamesItem.setText( "Copy &Names" );

copyValuesItem = new MenuItem( editDropMenu, SWT.PUSH );
copyValuesItem.setText( "Copy &Values" );

new MenuItem( editDropMenu, SWT.SEPARATOR );

removeItem = new MenuItem( editDropMenu, SWT.PUSH );
removeItem.setText( "&Remove\tDEL" );
removeItem.setAccelerator( SWT.DEL );

new MenuItem( editDropMenu, SWT.SEPARATOR );

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

queryTable = new Table( shell, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI );
queryTable.setHeaderVisible( true );
queryTable.setLinesVisible( true );
queryTable.addListener( SWT.Selection, this );
queryTable.addListener( SWT.MouseDoubleClick, 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 );
queryTable.setLayoutData( d1 );

TableColumn column1 = new TableColumn ( queryTable, SWT.NONE );
column1.setWidth( 130 );
column1.setText ( "Name" );

TableColumn column2 = new TableColumn ( queryTable, SWT.NONE );
column2.setWidth( 140 );
column2.setText ( "Value" );

MSwtUtil.addListenerToMenuItems( editDropMenu, this );
MSwtUtil.addListenerToTableColumns( queryTable, this );
MSwtUtil.getTableColumnWidthFromProperties( getTableName(), queryTable, prop, 130 );

init3();

updateMenus();
}
// --------------------------------------------------------------------------------
protected void init3()
{
}
// --------------------------------------------------------------------------------
protected void handleEvent2( Event event )
{
if( event.widget == queryTable )
	{
	switch( event.type )
		{
		case SWT.MouseDoubleClick:
			onQueryTableDoubleClick();
			break;
		case SWT.Selection:
			updateMenus();
			break;
		}
	}
else if( event.widget == editItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onEditItemSelect();
			break;
		}
	}
else if( event.widget == copyItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onCopyItemSelect();
			break;
		}
	}
else if( event.widget == copyNamesItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onCopyNamesItemSelect();
			break;
		}
	}
else if( event.widget == copyValuesItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			onCopyValuesItemSelect();
			break;
		}
	}
else if( event.widget == removeItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			removeItem();
			break;
		}
	}
else if( event.widget == selectAllItem )
	{
	switch( event.type )
		{
		case SWT.Selection:
			selectAll();
			break;
		}
	}
else if( MSwtUtil.getTableColumns( queryTable ).contains( event.widget ) )
	{
	onTableColumnResize();
	}
}
// --------------------------------------------------------------------------------
private void selectAll()
{
queryTable.selectAll();
updateMenus();
}
// --------------------------------------------------------------------------------
private void removeItem()
{
queryTable.remove( queryTable.getSelectionIndices() );
updateRequestWindow();
}
// --------------------------------------------------------------------------------
private void onEditItemSelect()
{
editQuery();
}
// --------------------------------------------------------------------------------
protected String getQuery()
{
StringBuffer s = new StringBuffer( 256 );
int count = queryTable.getItemCount();
for( int i = 0; i < count; ++i )
	{
	TableItem item = queryTable.getItem( i );
	String name = item.getText( 0 );
	String value = item.getText( 1 );
	if( s.length() > 0 )
		{	
		s.append( "&" );
		}
	s.append( urlEncode( name ) );
	s.append( "=" );
	s.append( urlEncode( value ) );
	}
return s.toString();
}
// --------------------------------------------------------------------------------
private void onCopyItemSelect()
{
copyItem( COPY_BOTH );
}
// --------------------------------------------------------------------------------
private void onCopyNamesItemSelect()
{
copyItem( COPY_NAMES );
}
// --------------------------------------------------------------------------------
private void onCopyValuesItemSelect()
{
copyItem( COPY_VALUES );
}
// --------------------------------------------------------------------------------
private void copyItem( int type )
{
int count = queryTable.getSelectionCount();
if( count == 0 )
	{
	return;
	}
StringBuffer s = new StringBuffer( 256 );
TableItem[] items = queryTable.getSelection();
for( int i = 0; i < count; ++i )
	{
	if( type == COPY_BOTH || type == COPY_NAMES )
		{
		s.append( items[ i ].getText( 0 ) );
		}
	if( type == COPY_BOTH )
		{
		s.append( "=" );
		}
	if( type == COPY_BOTH || type == COPY_VALUES )
		{		
		s.append( items[ i ].getText( 1 ) );
		}
	if( i != ( count - 1 ) )
		{	
		s.append( "\r\n" );
		}
	}
MSwtUtil.copyToClipboard( s.toString() );
}
// --------------------------------------------------------------------------------
private void editQuery()
{
int index = queryTable.getSelectionIndex();
if( index < 0 )
	{
	return;
	}
TableItem selectedItem = queryTable.getItem( index );
String name = selectedItem.getText( 0 );
String value = selectedItem.getText( 1 );

doorman.queryEditWindow = new MQueryEditWindow( this, name, value );
doorman.queryEditWindow.open();
}
// --------------------------------------------------------------------------------
private void onQueryTableDoubleClick()
{
editQuery();
}
// --------------------------------------------------------------------------------
private void onTableColumnResize()
{
MSwtUtil.setTableColumnWidthToProperties( getTableName(), queryTable, prop );
}
// --------------------------------------------------------------------------------
protected void onShellResize()
{
	// window
saveWindowBounds();
}
// --------------------------------------------------------------------------------
public void updateQuery( String name, String value )
{
int index = queryTable.getSelectionIndex();
if( index < 0 )
	{
	return;
	}
TableItem selectedItem = queryTable.getItem( index );
selectedItem.setText( 0, name );
selectedItem.setText( 1, value );

updateRequestWindow();
}
// --------------------------------------------------------------------------------
public void setFont( Font font )
{
queryTable.setFont( font );
}
// --------------------------------------------------------------------------------
public void updateGui( String query )
{
queryTable.removeAll();

String[] pairs = query.split( "&" );
for( int i = 0; i < pairs.length; ++i )
	{
	int index = pairs[ i ].indexOf( '=' );
	if( index > -1 )
		{
		TableItem item = new TableItem( queryTable, SWT.NONE );
		item.setText( 0, urlDecode( pairs[ i ].substring( 0, index ) ) );
		item.setText( 1, urlDecode( pairs[ i ].substring( index + 1 ) ) );
		}
	}
updateMenus();
}
// --------------------------------------------------------------------------------
protected String urlDecode( String s )
{
try
	{
	return MStringUtil.urlDecode( s, doorman.getEnc() );
	}
catch( IllegalArgumentException e )
	{
	return "";
	}
}
// --------------------------------------------------------------------------------
protected String urlEncode( String s )
{
try
	{
	return MStringUtil.urlEncode( s, doorman.getEnc() );
	}
catch( IllegalArgumentException e )
	{
	return "";
	}
}
// --------------------------------------------------------------------------------
public void updateMenus()
{
Table table = queryTable;

int count = table.getSelectionCount();
boolean oneItemSelected = ( count == 1 );
boolean itemSelected = ( count > 0 );
boolean multiItemSelected = ( count > 1 );
boolean itemExists = ( table.getItemCount() > 0 );

editItem.setEnabled( oneItemSelected );
copyItem.setEnabled( itemSelected );
copyNamesItem.setEnabled( itemSelected );
copyValuesItem.setEnabled( itemSelected );
removeItem.setEnabled( itemSelected );
selectAllItem.setEnabled( itemExists );
}
// --------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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