Phrancol's blog
To be surprised,to wonder,is to begin to understand.
BlogJava
首頁
聯系
聚合
管理
隨筆 - 1 文章 - 37 trackbacks - 0
<
2025年7月
>
日
一
二
三
四
五
六
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
8
9
留言簿
(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()
謝謝分享,我第一遍沒看懂,后來去其他地方看了有關權限檢查的的文章以后才看懂,建議解釋一下調用棧,和權限檢查(取調用棧中權限的交集)。
--Flexin
4.?re: [原]MIR3G二次加解密反匯編分析(四)——還原
@Mir3
好久沒有研究這個...
--phrancol
5.?re: [原]MIR3G二次加解密反匯編分析(四)——還原
ll4bb903 這其實是srand 函數
--Mir3
[原]Eclipse產品應用——控制臺的使用
在開發一個基于Eclipse的產品應用中,類似于Eclipse控制臺的小部件是必不可少的,例如:
1. 開發過程中需要一個控制臺來專門輸出調試信息,而在產品發布后卻不需要
2. 需要一個控制臺用于輸出系統信息
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應該避免暴露
*/
public
MessageConsole getMessageConsole()
{
return
this
.console;
}
/** */
/**
* 這里的println有很大的發揮空間
*/
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,下面的代碼就是具體的部分了
先看看[系統消息控制臺]
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
"
系統消息
"
;
}
}
其他2個View也是這樣的代碼了,只是名字不同
這樣設計出來的控制臺有較好的擴展性,耦合度也較低,至于Log4的應用需要在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
閱讀(1271)
評論(2)
編輯
收藏
所屬分類:
Eclipse
FeedBack:
#
re: [原]Eclipse產品應用——控制臺的使用 2008-07-03 10:21
冰河の泥魚
如果代碼全一些就會更好了.發現MessageConsole這個類沒有.
回復
更多評論
#
re: [原]Eclipse產品應用——控制臺的使用
2008-07-03 10:23
冰河の泥魚
哈,找到了.
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
[原]JAVA版傳奇3G輔助程序
[原]Eclipse產品應用——控制臺的使用
Copyright ©2025 Phrancol Yang Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
亚洲国产精品久久久久婷婷软件
|
亚洲网站在线播放
|
亚洲中文字幕无码日韩
|
久久精品国产亚洲AV香蕉
|
亚洲国产成人无码AV在线影院
|
一级一级毛片免费播放
|
中文毛片无遮挡高潮免费
|
免费少妇a级毛片人成网
|
亚洲精品无码久久毛片波多野吉衣
|
青青操在线免费观看
|
在线免费视频一区二区
|
亚洲欧洲在线观看
|
99久久99热精品免费观看国产
|
亚洲另类激情专区小说图片
|
亚洲av日韩av综合
|
日韩精品在线免费观看
|
亚洲国产精品一区二区三区久久
|
亚洲一级视频在线观看
|
妞干网免费视频观看
|
久久精品国产亚洲AV电影网
|
男女免费观看在线爽爽爽视频
|
亚洲AV无码专区亚洲AV伊甸园
|
男人j进女人p免费视频
|
四虎影视永久免费视频观看
|
2020国产精品亚洲综合网
|
成年黄网站色大免费全看
|
亚洲人成电影网站色
|
成人免费午夜在线观看
|
亚洲欧洲日本国产
|
67194成手机免费观看
|
亚洲国产成人一区二区三区
|
一级毛片成人免费看a
|
亚洲av无码不卡
|
成人毛片18岁女人毛片免费看
|
亚洲乱码卡一卡二卡三
|
久久九九兔免费精品6
|
亚洲黄色在线视频
|
91精品国产免费
|
亚洲电影免费观看
|
免费jjzz在线播放国产
|
大地资源中文在线观看免费版
|