Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
cef97d64
提交
cef97d64
authored
7 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use GUIConsole as superclass of Console for environments with AWT support
上级
fb30fccf
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
424 行增加
和
422 行删除
+424
-422
Console.java
h2/src/main/org/h2/tools/Console.java
+19
-421
GUIConsole.java
h2/src/main/org/h2/tools/GUIConsole.java
+403
-0
TestTools.java
h2/src/test/org/h2/test/unit/TestTools.java
+2
-1
没有找到文件。
h2/src/main/org/h2/tools/Console.java
浏览文件 @
cef97d64
...
...
@@ -5,35 +5,8 @@
*/
package
org
.
h2
.
tools
;
//## AWT ##
import
java.awt.Button
;
import
java.awt.Dimension
;
import
java.awt.Font
;
import
java.awt.Frame
;
import
java.awt.GraphicsEnvironment
;
import
java.awt.GridBagConstraints
;
import
java.awt.GridBagLayout
;
import
java.awt.Image
;
import
java.awt.Insets
;
import
java.awt.Label
;
import
java.awt.MenuItem
;
import
java.awt.Panel
;
import
java.awt.PopupMenu
;
import
java.awt.SystemColor
;
import
java.awt.TextField
;
import
java.awt.Toolkit
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
import
java.awt.event.MouseEvent
;
import
java.awt.event.MouseListener
;
import
java.awt.event.WindowEvent
;
import
java.awt.event.WindowListener
;
import
java.io.IOException
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.util.Locale
;
import
java.util.concurrent.TimeUnit
;
import
org.h2.server.ShutdownHandler
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.Tool
;
...
...
@@ -45,24 +18,13 @@ import org.h2.util.Utils;
*
* @author Thomas Mueller, Ridvan Agar
*/
public
class
Console
extends
Tool
implements
//## AWT ##
ActionListener
,
MouseListener
,
WindowListener
,
//*/
ShutdownHandler
{
public
class
Console
extends
Tool
implements
ShutdownHandler
{
Server
web
;
private
Server
tcp
,
pg
;
//## AWT ##
private
Frame
frame
;
private
boolean
trayIconUsed
;
private
Font
font
;
private
Button
startBrowser
;
private
TextField
urlText
;
private
Object
tray
;
private
Object
trayIcon
;
//*/
private
Server
web
,
tcp
,
pg
;
private
boolean
isWindows
;
private
long
lastOpenNs
;
boolean
isWindows
;
/**
* When running without options, -tcp, -web, -browser and -pg are started.
...
...
@@ -99,7 +61,13 @@ ShutdownHandler {
* @param args the command line arguments
*/
public
static
void
main
(
String
...
args
)
throws
SQLException
{
new
Console
().
runTool
(
args
);
Console
console
;
try
{
console
=
(
Console
)
Utils
.
newInstance
(
"org.h2.tools.GUIConsole"
);
}
catch
(
Exception
|
NoClassDefFoundError
e
)
{
console
=
new
Console
();
}
console
.
runTool
(
args
);
}
/**
...
...
@@ -241,18 +209,9 @@ ShutdownHandler {
}
}
//## AWT ##
if
(
toolStart
&&
webRunning
&&
!
GraphicsEnvironment
.
isHeadless
())
{
loadFont
();
try
{
if
(!
createTrayIcon
())
{
showWindow
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
toolStart
&&
webRunning
){
show
();
}
//*/
// start browser in any case (even if the server is already running)
// because some people don't look at the output,
...
...
@@ -296,6 +255,9 @@ ShutdownHandler {
}
}
void
show
()
{
}
private
void
printProblem
(
Exception
e
,
Server
server
)
{
if
(
server
==
null
)
{
e
.
printStackTrace
();
...
...
@@ -305,19 +267,6 @@ ShutdownHandler {
}
}
private
static
Image
loadImage
(
String
name
)
{
try
{
byte
[]
imageData
=
Utils
.
getResource
(
name
);
if
(
imageData
==
null
)
{
return
null
;
}
return
Toolkit
.
getDefaultToolkit
().
createImage
(
imageData
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* INTERNAL.
* Stop all servers that were started using the console.
...
...
@@ -336,213 +285,9 @@ ShutdownHandler {
pg
.
stop
();
pg
=
null
;
}
//## AWT ##
if
(
frame
!=
null
)
{
frame
.
dispose
();
frame
=
null
;
}
if
(
trayIconUsed
)
{
try
{
// tray.remove(trayIcon);
Utils
.
callMethod
(
tray
,
"remove"
,
trayIcon
);
}
catch
(
Exception
e
)
{
// ignore
}
finally
{
trayIcon
=
null
;
tray
=
null
;
trayIconUsed
=
false
;
}
System
.
gc
();
// Mac OS X: Console tool process did not stop on exit
String
os
=
System
.
getProperty
(
"os.name"
,
"generic"
).
toLowerCase
(
Locale
.
ENGLISH
);
if
(
os
.
contains
(
"mac"
))
{
for
(
Thread
t
:
Thread
.
getAllStackTraces
().
keySet
())
{
if
(
t
.
getName
().
startsWith
(
"AWT-"
))
{
t
.
interrupt
();
}
}
}
Thread
.
currentThread
().
interrupt
();
// throw new ThreadDeath();
}
//*/
}
//## AWT ##
private
void
loadFont
()
{
if
(
isWindows
)
{
font
=
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
11
);
}
else
{
font
=
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
12
);
}
}
private
boolean
createTrayIcon
()
{
try
{
// SystemTray.isSupported();
boolean
supported
=
(
Boolean
)
Utils
.
callStaticMethod
(
"java.awt.SystemTray.isSupported"
);
if
(!
supported
)
{
return
false
;
}
PopupMenu
menuConsole
=
new
PopupMenu
();
MenuItem
itemConsole
=
new
MenuItem
(
"H2 Console"
);
itemConsole
.
setActionCommand
(
"console"
);
itemConsole
.
addActionListener
(
this
);
itemConsole
.
setFont
(
font
);
menuConsole
.
add
(
itemConsole
);
MenuItem
itemStatus
=
new
MenuItem
(
"Status"
);
itemStatus
.
setActionCommand
(
"status"
);
itemStatus
.
addActionListener
(
this
);
itemStatus
.
setFont
(
font
);
menuConsole
.
add
(
itemStatus
);
MenuItem
itemExit
=
new
MenuItem
(
"Exit"
);
itemExit
.
setFont
(
font
);
itemExit
.
setActionCommand
(
"exit"
);
itemExit
.
addActionListener
(
this
);
menuConsole
.
add
(
itemExit
);
// tray = SystemTray.getSystemTray();
tray
=
Utils
.
callStaticMethod
(
"java.awt.SystemTray.getSystemTray"
);
// Dimension d = tray.getTrayIconSize();
Dimension
d
=
(
Dimension
)
Utils
.
callMethod
(
tray
,
"getTrayIconSize"
);
String
iconFile
;
if
(
d
.
width
>=
24
&&
d
.
height
>=
24
)
{
iconFile
=
"/org/h2/res/h2-24.png"
;
}
else
if
(
d
.
width
>=
22
&&
d
.
height
>=
22
)
{
// for Mac OS X 10.8.1 with retina display:
// the reported resolution is 22 x 22, but the image
// is scaled and the real resolution is 44 x 44
iconFile
=
"/org/h2/res/h2-64-t.png"
;
// iconFile = "/org/h2/res/h2-22-t.png";
}
else
{
iconFile
=
"/org/h2/res/h2.png"
;
}
Image
icon
=
loadImage
(
iconFile
);
// trayIcon = new TrayIcon(image, "H2 Database Engine",
// menuConsole);
trayIcon
=
Utils
.
newInstance
(
"java.awt.TrayIcon"
,
icon
,
"H2 Database Engine"
,
menuConsole
);
// trayIcon.addMouseListener(this);
Utils
.
callMethod
(
trayIcon
,
"addMouseListener"
,
this
);
// tray.add(trayIcon);
Utils
.
callMethod
(
tray
,
"add"
,
trayIcon
);
this
.
trayIconUsed
=
true
;
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
private
void
showWindow
()
{
if
(
frame
!=
null
)
{
return
;
}
frame
=
new
Frame
(
"H2 Console"
);
frame
.
addWindowListener
(
this
);
Image
image
=
loadImage
(
"/org/h2/res/h2.png"
);
if
(
image
!=
null
)
{
frame
.
setIconImage
(
image
);
}
frame
.
setResizable
(
false
);
frame
.
setBackground
(
SystemColor
.
control
);
GridBagLayout
layout
=
new
GridBagLayout
();
frame
.
setLayout
(
layout
);
// the main panel keeps everything together
Panel
mainPanel
=
new
Panel
(
layout
);
GridBagConstraints
constraintsPanel
=
new
GridBagConstraints
();
constraintsPanel
.
gridx
=
0
;
constraintsPanel
.
weightx
=
1.0
D
;
constraintsPanel
.
weighty
=
1.0
D
;
constraintsPanel
.
fill
=
GridBagConstraints
.
BOTH
;
constraintsPanel
.
insets
=
new
Insets
(
0
,
10
,
0
,
10
);
constraintsPanel
.
gridy
=
0
;
GridBagConstraints
constraintsButton
=
new
GridBagConstraints
();
constraintsButton
.
gridx
=
0
;
constraintsButton
.
gridwidth
=
2
;
constraintsButton
.
insets
=
new
Insets
(
10
,
0
,
0
,
0
);
constraintsButton
.
gridy
=
1
;
constraintsButton
.
anchor
=
GridBagConstraints
.
EAST
;
GridBagConstraints
constraintsTextField
=
new
GridBagConstraints
();
constraintsTextField
.
fill
=
GridBagConstraints
.
HORIZONTAL
;
constraintsTextField
.
gridy
=
0
;
constraintsTextField
.
weightx
=
1.0
;
constraintsTextField
.
insets
=
new
Insets
(
0
,
5
,
0
,
0
);
constraintsTextField
.
gridx
=
1
;
GridBagConstraints
constraintsLabel
=
new
GridBagConstraints
();
constraintsLabel
.
gridx
=
0
;
constraintsLabel
.
gridy
=
0
;
Label
label
=
new
Label
(
"H2 Console URL:"
,
Label
.
LEFT
);
label
.
setFont
(
font
);
mainPanel
.
add
(
label
,
constraintsLabel
);
urlText
=
new
TextField
();
urlText
.
setEditable
(
false
);
urlText
.
setFont
(
font
);
urlText
.
setText
(
web
.
getURL
());
if
(
isWindows
)
{
urlText
.
setFocusable
(
false
);
}
mainPanel
.
add
(
urlText
,
constraintsTextField
);
startBrowser
=
new
Button
(
"Start Browser"
);
startBrowser
.
setFocusable
(
false
);
startBrowser
.
setActionCommand
(
"console"
);
startBrowser
.
addActionListener
(
this
);
startBrowser
.
setFont
(
font
);
mainPanel
.
add
(
startBrowser
,
constraintsButton
);
frame
.
add
(
mainPanel
,
constraintsPanel
);
int
width
=
300
,
height
=
120
;
frame
.
setSize
(
width
,
height
);
Dimension
screenSize
=
Toolkit
.
getDefaultToolkit
().
getScreenSize
();
frame
.
setLocation
((
screenSize
.
width
-
width
)
/
2
,
(
screenSize
.
height
-
height
)
/
2
);
try
{
frame
.
setVisible
(
true
);
}
catch
(
Throwable
t
)
{
// ignore
// some systems don't support this method, for example IKVM
// however it still works
}
try
{
// ensure this window is in front of the browser
frame
.
setAlwaysOnTop
(
true
);
frame
.
setAlwaysOnTop
(
false
);
}
catch
(
Throwable
t
)
{
// ignore
}
}
private
void
startBrowser
()
{
if
(
web
!=
null
)
{
String
url
=
web
.
getURL
();
if
(
urlText
!=
null
)
{
urlText
.
setText
(
url
);
}
long
now
=
System
.
nanoTime
();
if
(
lastOpenNs
==
0
||
lastOpenNs
+
TimeUnit
.
MILLISECONDS
.
toNanos
(
100
)
<
now
)
{
lastOpenNs
=
now
;
openBrowser
(
url
);
}
}
}
//*/
private
void
openBrowser
(
String
url
)
{
void
openBrowser
(
String
url
)
{
try
{
Server
.
openBrowser
(
url
);
}
catch
(
Exception
e
)
{
...
...
@@ -550,151 +295,4 @@ ShutdownHandler {
}
}
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
String
command
=
e
.
getActionCommand
();
if
(
"exit"
.
equals
(
command
))
{
shutdown
();
}
else
if
(
"console"
.
equals
(
command
))
{
startBrowser
();
}
else
if
(
"status"
.
equals
(
command
))
{
showWindow
();
}
else
if
(
startBrowser
==
e
.
getSource
())
{
// for some reason, IKVM ignores setActionCommand
startBrowser
();
}
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
mouseClicked
(
MouseEvent
e
)
{
if
(
e
.
getButton
()
==
MouseEvent
.
BUTTON1
)
{
startBrowser
();
}
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
mouseEntered
(
MouseEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
mouseExited
(
MouseEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
mousePressed
(
MouseEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
mouseReleased
(
MouseEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowClosing
(
WindowEvent
e
)
{
if
(
trayIconUsed
)
{
frame
.
dispose
();
frame
=
null
;
}
else
{
shutdown
();
}
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowActivated
(
WindowEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowClosed
(
WindowEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowDeactivated
(
WindowEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowDeiconified
(
WindowEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowIconified
(
WindowEvent
e
)
{
// nothing to do
}
//*/
/**
* INTERNAL
*/
//## AWT ##
@Override
public
void
windowOpened
(
WindowEvent
e
)
{
// nothing to do
}
//*/
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/GUIConsole.java
0 → 100644
浏览文件 @
cef97d64
/*
* Copyright 2004-2018 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
tools
;
import
java.awt.Button
;
import
java.awt.Dimension
;
import
java.awt.Font
;
import
java.awt.Frame
;
import
java.awt.GraphicsEnvironment
;
import
java.awt.GridBagConstraints
;
import
java.awt.GridBagLayout
;
import
java.awt.Image
;
import
java.awt.Insets
;
import
java.awt.Label
;
import
java.awt.MenuItem
;
import
java.awt.Panel
;
import
java.awt.PopupMenu
;
import
java.awt.SystemColor
;
import
java.awt.TextField
;
import
java.awt.Toolkit
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
import
java.awt.event.MouseEvent
;
import
java.awt.event.MouseListener
;
import
java.awt.event.WindowEvent
;
import
java.awt.event.WindowListener
;
import
java.io.IOException
;
import
java.util.Locale
;
import
java.util.concurrent.TimeUnit
;
import
org.h2.util.Utils
;
/**
* Console for environments with AWT support.
*/
public
class
GUIConsole
extends
Console
implements
ActionListener
,
MouseListener
,
WindowListener
{
private
long
lastOpenNs
;
private
Frame
frame
;
private
boolean
trayIconUsed
;
private
Font
font
;
private
Button
startBrowser
;
private
TextField
urlText
;
private
Object
tray
;
private
Object
trayIcon
;
@Override
void
show
()
{
if
(!
GraphicsEnvironment
.
isHeadless
())
{
loadFont
();
try
{
if
(!
createTrayIcon
())
{
showWindow
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
private
static
Image
loadImage
(
String
name
)
{
try
{
byte
[]
imageData
=
Utils
.
getResource
(
name
);
if
(
imageData
==
null
)
{
return
null
;
}
return
Toolkit
.
getDefaultToolkit
().
createImage
(
imageData
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
@Override
public
void
shutdown
()
{
super
.
shutdown
();
if
(
frame
!=
null
)
{
frame
.
dispose
();
frame
=
null
;
}
if
(
trayIconUsed
)
{
try
{
// tray.remove(trayIcon);
Utils
.
callMethod
(
tray
,
"remove"
,
trayIcon
);
}
catch
(
Exception
e
)
{
// ignore
}
finally
{
trayIcon
=
null
;
tray
=
null
;
trayIconUsed
=
false
;
}
System
.
gc
();
// Mac OS X: Console tool process did not stop on exit
String
os
=
System
.
getProperty
(
"os.name"
,
"generic"
).
toLowerCase
(
Locale
.
ENGLISH
);
if
(
os
.
contains
(
"mac"
))
{
for
(
Thread
t
:
Thread
.
getAllStackTraces
().
keySet
())
{
if
(
t
.
getName
().
startsWith
(
"AWT-"
))
{
t
.
interrupt
();
}
}
}
Thread
.
currentThread
().
interrupt
();
// throw new ThreadDeath();
}
}
private
void
loadFont
()
{
if
(
isWindows
)
{
font
=
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
11
);
}
else
{
font
=
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
12
);
}
}
private
boolean
createTrayIcon
()
{
try
{
// SystemTray.isSupported();
boolean
supported
=
(
Boolean
)
Utils
.
callStaticMethod
(
"java.awt.SystemTray.isSupported"
);
if
(!
supported
)
{
return
false
;
}
PopupMenu
menuConsole
=
new
PopupMenu
();
MenuItem
itemConsole
=
new
MenuItem
(
"H2 Console"
);
itemConsole
.
setActionCommand
(
"console"
);
itemConsole
.
addActionListener
(
this
);
itemConsole
.
setFont
(
font
);
menuConsole
.
add
(
itemConsole
);
MenuItem
itemStatus
=
new
MenuItem
(
"Status"
);
itemStatus
.
setActionCommand
(
"status"
);
itemStatus
.
addActionListener
(
this
);
itemStatus
.
setFont
(
font
);
menuConsole
.
add
(
itemStatus
);
MenuItem
itemExit
=
new
MenuItem
(
"Exit"
);
itemExit
.
setFont
(
font
);
itemExit
.
setActionCommand
(
"exit"
);
itemExit
.
addActionListener
(
this
);
menuConsole
.
add
(
itemExit
);
// tray = SystemTray.getSystemTray();
tray
=
Utils
.
callStaticMethod
(
"java.awt.SystemTray.getSystemTray"
);
// Dimension d = tray.getTrayIconSize();
Dimension
d
=
(
Dimension
)
Utils
.
callMethod
(
tray
,
"getTrayIconSize"
);
String
iconFile
;
if
(
d
.
width
>=
24
&&
d
.
height
>=
24
)
{
iconFile
=
"/org/h2/res/h2-24.png"
;
}
else
if
(
d
.
width
>=
22
&&
d
.
height
>=
22
)
{
// for Mac OS X 10.8.1 with retina display:
// the reported resolution is 22 x 22, but the image
// is scaled and the real resolution is 44 x 44
iconFile
=
"/org/h2/res/h2-64-t.png"
;
// iconFile = "/org/h2/res/h2-22-t.png";
}
else
{
iconFile
=
"/org/h2/res/h2.png"
;
}
Image
icon
=
loadImage
(
iconFile
);
// trayIcon = new TrayIcon(image, "H2 Database Engine",
// menuConsole);
trayIcon
=
Utils
.
newInstance
(
"java.awt.TrayIcon"
,
icon
,
"H2 Database Engine"
,
menuConsole
);
// trayIcon.addMouseListener(this);
Utils
.
callMethod
(
trayIcon
,
"addMouseListener"
,
this
);
// tray.add(trayIcon);
Utils
.
callMethod
(
tray
,
"add"
,
trayIcon
);
this
.
trayIconUsed
=
true
;
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
private
void
showWindow
()
{
if
(
frame
!=
null
)
{
return
;
}
frame
=
new
Frame
(
"H2 Console"
);
frame
.
addWindowListener
(
this
);
Image
image
=
loadImage
(
"/org/h2/res/h2.png"
);
if
(
image
!=
null
)
{
frame
.
setIconImage
(
image
);
}
frame
.
setResizable
(
false
);
frame
.
setBackground
(
SystemColor
.
control
);
GridBagLayout
layout
=
new
GridBagLayout
();
frame
.
setLayout
(
layout
);
// the main panel keeps everything together
Panel
mainPanel
=
new
Panel
(
layout
);
GridBagConstraints
constraintsPanel
=
new
GridBagConstraints
();
constraintsPanel
.
gridx
=
0
;
constraintsPanel
.
weightx
=
1.0
D
;
constraintsPanel
.
weighty
=
1.0
D
;
constraintsPanel
.
fill
=
GridBagConstraints
.
BOTH
;
constraintsPanel
.
insets
=
new
Insets
(
0
,
10
,
0
,
10
);
constraintsPanel
.
gridy
=
0
;
GridBagConstraints
constraintsButton
=
new
GridBagConstraints
();
constraintsButton
.
gridx
=
0
;
constraintsButton
.
gridwidth
=
2
;
constraintsButton
.
insets
=
new
Insets
(
10
,
0
,
0
,
0
);
constraintsButton
.
gridy
=
1
;
constraintsButton
.
anchor
=
GridBagConstraints
.
EAST
;
GridBagConstraints
constraintsTextField
=
new
GridBagConstraints
();
constraintsTextField
.
fill
=
GridBagConstraints
.
HORIZONTAL
;
constraintsTextField
.
gridy
=
0
;
constraintsTextField
.
weightx
=
1.0
;
constraintsTextField
.
insets
=
new
Insets
(
0
,
5
,
0
,
0
);
constraintsTextField
.
gridx
=
1
;
GridBagConstraints
constraintsLabel
=
new
GridBagConstraints
();
constraintsLabel
.
gridx
=
0
;
constraintsLabel
.
gridy
=
0
;
Label
label
=
new
Label
(
"H2 Console URL:"
,
Label
.
LEFT
);
label
.
setFont
(
font
);
mainPanel
.
add
(
label
,
constraintsLabel
);
urlText
=
new
TextField
();
urlText
.
setEditable
(
false
);
urlText
.
setFont
(
font
);
urlText
.
setText
(
web
.
getURL
());
if
(
isWindows
)
{
urlText
.
setFocusable
(
false
);
}
mainPanel
.
add
(
urlText
,
constraintsTextField
);
startBrowser
=
new
Button
(
"Start Browser"
);
startBrowser
.
setFocusable
(
false
);
startBrowser
.
setActionCommand
(
"console"
);
startBrowser
.
addActionListener
(
this
);
startBrowser
.
setFont
(
font
);
mainPanel
.
add
(
startBrowser
,
constraintsButton
);
frame
.
add
(
mainPanel
,
constraintsPanel
);
int
width
=
300
,
height
=
120
;
frame
.
setSize
(
width
,
height
);
Dimension
screenSize
=
Toolkit
.
getDefaultToolkit
().
getScreenSize
();
frame
.
setLocation
((
screenSize
.
width
-
width
)
/
2
,
(
screenSize
.
height
-
height
)
/
2
);
try
{
frame
.
setVisible
(
true
);
}
catch
(
Throwable
t
)
{
// ignore
// some systems don't support this method, for example IKVM
// however it still works
}
try
{
// ensure this window is in front of the browser
frame
.
setAlwaysOnTop
(
true
);
frame
.
setAlwaysOnTop
(
false
);
}
catch
(
Throwable
t
)
{
// ignore
}
}
private
void
startBrowser
()
{
if
(
web
!=
null
)
{
String
url
=
web
.
getURL
();
if
(
urlText
!=
null
)
{
urlText
.
setText
(
url
);
}
long
now
=
System
.
nanoTime
();
if
(
lastOpenNs
==
0
||
lastOpenNs
+
TimeUnit
.
MILLISECONDS
.
toNanos
(
100
)
<
now
)
{
lastOpenNs
=
now
;
openBrowser
(
url
);
}
}
}
/**
* INTERNAL
*/
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
String
command
=
e
.
getActionCommand
();
if
(
"exit"
.
equals
(
command
))
{
shutdown
();
}
else
if
(
"console"
.
equals
(
command
))
{
startBrowser
();
}
else
if
(
"status"
.
equals
(
command
))
{
showWindow
();
}
else
if
(
startBrowser
==
e
.
getSource
())
{
// for some reason, IKVM ignores setActionCommand
startBrowser
();
}
}
/**
* INTERNAL
*/
@Override
public
void
mouseClicked
(
MouseEvent
e
)
{
if
(
e
.
getButton
()
==
MouseEvent
.
BUTTON1
)
{
startBrowser
();
}
}
/**
* INTERNAL
*/
@Override
public
void
mouseEntered
(
MouseEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
mouseExited
(
MouseEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
mousePressed
(
MouseEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
mouseReleased
(
MouseEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowClosing
(
WindowEvent
e
)
{
if
(
trayIconUsed
)
{
frame
.
dispose
();
frame
=
null
;
}
else
{
shutdown
();
}
}
/**
* INTERNAL
*/
@Override
public
void
windowActivated
(
WindowEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowClosed
(
WindowEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowDeactivated
(
WindowEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowDeiconified
(
WindowEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowIconified
(
WindowEvent
e
)
{
// nothing to do
}
/**
* INTERNAL
*/
@Override
public
void
windowOpened
(
WindowEvent
e
)
{
// nothing to do
}
}
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestTools.java
浏览文件 @
cef97d64
...
...
@@ -50,6 +50,7 @@ import org.h2.tools.ChangeFileEncryption;
import
org.h2.tools.Console
;
import
org.h2.tools.ConvertTraceFile
;
import
org.h2.tools.DeleteDbFiles
;
import
org.h2.tools.GUIConsole
;
import
org.h2.tools.Recover
;
import
org.h2.tools.Restore
;
import
org.h2.tools.RunScript
;
...
...
@@ -127,7 +128,7 @@ public class TestTools extends TestBase {
private
void
testConsole
()
throws
Exception
{
String
old
=
System
.
getProperty
(
SysProperties
.
H2_BROWSER
);
Console
c
=
new
Console
();
GUIConsole
c
=
new
GUI
Console
();
c
.
setOut
(
new
PrintStream
(
new
ByteArrayOutputStream
()));
try
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论