Phrancol's blog
To be surprised,to wonder,is to begin to understand.
BlogJava
首頁
聯(lián)系
聚合
管理
隨筆 - 1 文章 - 37 trackbacks - 0
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
留言簿
(16)
給我留言
查看公開留言
查看私人留言
隨筆分類
反匯編(1)
隨筆檔案
2008年5月 (1)
文章分類
Eclipse(2)
iOS(1)
Mir3gAnyWhere(1)
OSGI(16)
反匯編(5)
文章檔案
2011年11月 (1)
2009年11月 (2)
2009年8月 (1)
2009年7月 (2)
2009年5月 (2)
2009年4月 (3)
2009年3月 (1)
2008年11月 (1)
2008年10月 (1)
2008年7月 (1)
2008年6月 (6)
2008年5月 (1)
2008年4月 (5)
2007年11月 (1)
2007年10月 (1)
2007年9月 (4)
2007年8月 (2)
test
搜索
最新評論
1.?re: 精武館——在線棋牌游戲平臺[未登錄]
好
--五味子
2.?re: 精武館——在線棋牌游戲平臺[未登錄]
很好玩
--五味子
3.?re: [原]一個例子理解AccessController.doPrivileged()
謝謝分享,我第一遍沒看懂,后來去其他地方看了有關(guān)權(quán)限檢查的的文章以后才看懂,建議解釋一下調(diào)用棧,和權(quán)限檢查(取調(diào)用棧中權(quán)限的交集)。
--Flexin
4.?re: [原]MIR3G二次加解密反匯編分析(四)——還原
@Mir3
好久沒有研究這個...
--phrancol
5.?re: [原]MIR3G二次加解密反匯編分析(四)——還原
ll4bb903 這其實是srand 函數(shù)
--Mir3
[原]Eclipse產(chǎn)品應(yīng)用——控制臺的使用
在開發(fā)一個基于Eclipse的產(chǎn)品應(yīng)用中,類似于Eclipse控制臺的小部件是必不可少的,例如:
1. 開發(fā)過程中需要一個控制臺來專門輸出調(diào)試信息,而在產(chǎn)品發(fā)布后卻不需要
2. 需要一個控制臺用于輸出系統(tǒng)信息
3. 需要一個控制臺用于輸出普通消息
先定義個簡單的接口MConsole
public
interface
MConsole
{
public
MessageConsole getMessageConsole();
public
void
println(String msg);
}
MConsoleFactory 還是需要的,就像Log4j的Logger一樣,要控制臺的時候,只需要來一條如下語句就可以了
private
static
final
MConsole mConsole
=
MConsoleFactory.CONSOLE_SYSTEM;
public
class
MConsoleFactory
{
public
static
final
MConsole CONSOLE_MESSAGE
=
new
AbstractMConsole(
new
MessageConsole(
"
控制臺
"
,
null
));
public
static
final
MConsole CONSOLE_SYSTEM
=
new
AbstractMConsole(
new
MessageConsole(
"
控制臺
"
,
null
));
public
static
final
MConsole DEBUG_SYSTEM
=
new
AbstractMConsole(
new
MessageConsole(
"
控制臺
"
,
null
));
static
{
{
IConsoleManager manager
=
ConsolePlugin.getDefault()
.getConsoleManager();
//
IConsole[] existing = manager.getConsoles();
manager.addConsoles(
new
IConsole[]
{
CONSOLE_SYSTEM.getMessageConsole(),
CONSOLE_MESSAGE.getMessageConsole(),
DEBUG_SYSTEM.getMessageConsole() }
);
}
}
private
MConsoleFactory()
{
}
}
接下來就是AbstractMConsole了
class
AbstractMConsole
implements
MConsole
{
private
MessageConsole console;
private
MessageConsoleStream stream
=
null
;
public
AbstractMConsole(MessageConsole console)
{
this
.console
=
console;
this
.stream
=
console.newMessageStream();
}
/** */
/**
* 這個MessageConsole應(yīng)該避免暴露
*/
public
MessageConsole getMessageConsole()
{
return
this
.console;
}
/** */
/**
* 這里的println有很大的發(fā)揮空間
*/
public
void
println(String msg)
{
StringBuffer sb
=
new
StringBuffer();
sb.append(
new
SimpleDateFormat(
"
[HH:mm:ss]
"
).format(
new
Date()));
sb.append(msg);
this
.stream.println(sb.toString());
}
}
上面3個部分只是在MConsoleFactory中加入了3個MessageConsole,下面的代碼就是具體的部分了
先看看[系統(tǒng)消息控制臺]
public
class
ConsoleView
extends
ViewPart
{
public
static
final
String ID
=
"
donf.yang.mir3g.ui.view.consoleView
"
;
public
ConsoleView()
{
}
@Override
public
void
createPartControl(Composite parent)
{
MessageConsole mainConsole
=
MConsoleFactory.CONSOLE_SYSTEM
.getMessageConsole();
final
TextConsoleViewer tcv
=
new
TextConsoleViewer(parent, mainConsole);
/**/
/*
如果這個console不是在第一個lab,當切換到該lab時,如果要自動滾屏到最后一條輸出,需要加下面這行
*/
toTopIndex(tcv);
tcv.addTextListener(
new
ITextListener()
{
public
void
textChanged(TextEvent event)
{
toTopIndex(tcv);
}
}
);
/** */
/**
* 下面2行注釋的代碼也是與上面的toTopIndex具有相同的功效, 只是看起來有點別扭,因為會延遲50毫秒,具體請參照Eclipse的代碼
*/
//
IOConsoleViewer iov = new IOConsoleViewer(parent,mainConsole);
//
iov.setAutoScroll(true);
}
/** */
/**
* 自動滾屏
*
*
@param
tcv
*/
private
void
toTopIndex(
final
TextConsoleViewer tcv)
{
StyledText textWidget
=
tcv.getTextWidget();
if
(textWidget
!=
null
&&
!
textWidget.isDisposed())
{
int
lineCount
=
textWidget.getLineCount();
tcv.setTopIndex(lineCount
-
1
);
}
}
@Override
public
void
setFocus()
{
}
/** */
/**
* 這個才是控制臺的名字
*/
public
String getPartName()
{
return
"
系統(tǒng)消息
"
;
}
}
其他2個View也是這樣的代碼了,只是名字不同
這樣設(shè)計出來的控制臺有較好的擴展性,耦合度也較低,至于Log4的應(yīng)用需要在createPartControl中加入如下代碼
MessageConsoleStream stream
=
mainConsole.newMessageStream();
System.setOut(
new
PrintStream(stream));
try
{
Properties props
=
new
Properties();
props.load(
this
.getClass().getResourceAsStream(
"
/log4j.properties
"
));
PropertyConfigurator.configure(props);
}
catch
(Exception e)
{
}
posted on 2008-06-10 11:20
Phrancol Yang
閱讀(1264)
評論(2)
編輯
收藏
所屬分類:
Eclipse
FeedBack:
#
re: [原]Eclipse產(chǎn)品應(yīng)用——控制臺的使用 2008-07-03 10:21
冰河の泥魚
如果代碼全一些就會更好了.發(fā)現(xiàn)MessageConsole這個類沒有.
回復(fù)
更多評論
#
re: [原]Eclipse產(chǎn)品應(yīng)用——控制臺的使用
2008-07-03 10:23
冰河の泥魚
哈,找到了.
回復(fù)
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
[原]JAVA版?zhèn)髌?G輔助程序
[原]Eclipse產(chǎn)品應(yīng)用——控制臺的使用
Copyright ©2025 Phrancol Yang Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
免费一看一级毛片人
|
黄色网址免费在线
|
久久91亚洲精品中文字幕
|
国产精品黄页在线播放免费
|
99视频在线免费
|
中文字幕免费不卡二区
|
国产亚洲综合视频
|
精品亚洲成A人无码成A在线观看
|
亚洲成a人片在线观看无码
|
亚洲黄片手机免费观看
|
四虎影视永久免费观看
|
成年男女男精品免费视频网站
|
久久这里只精品99re免费
|
成人免费毛片内射美女-百度
|
成人精品一区二区三区不卡免费看
|
水蜜桃视频在线观看免费
|
亚洲成AV人影片在线观看
|
亚洲精品福利你懂
|
久久综合亚洲鲁鲁五月天
|
亚洲av无码不卡一区二区三区
|
中文字幕亚洲乱码熟女一区二区
|
免费一级做a爰片性色毛片
|
免费va人成视频网站全
|
国产美女无遮挡免费视频网站
|
亚洲国产成人久久
|
亚洲网红精品大秀在线观看
|
亚洲国产精品嫩草影院在线观看
|
avtt天堂网手机版亚洲
|
亚洲日本国产精华液
|
亚洲日本乱码一区二区在线二产线
|
亚洲大尺度无码无码专区
|
久久精品国产亚洲AV网站
|
亚洲国产精华液网站w
|
亚洲精品无码不卡在线播HE
|
久久成人18免费网站
|
九九99热免费最新版
|
a级片在线免费看
|
美女内射无套日韩免费播放
|
99ee6热久久免费精品6
|
国产福利在线观看免费第一福利
|
99在线视频免费观看视频
|