﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-再一次也好-随笔分类-Eclipse Plugin</title><link>http://www.blogjava.net/xujun7/category/39839.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 31 Jul 2009 07:13:50 GMT</lastBuildDate><pubDate>Fri, 31 Jul 2009 07:13:50 GMT</pubDate><ttl>60</ttl><item><title>Eclipse插件开发学习笔记 图像管理</title><link>http://www.blogjava.net/xujun7/archive/2009/07/31/289256.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Fri, 31 Jul 2009 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/31/289256.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/289256.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/31/289256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/289256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/289256.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Image</span><span style="font-family: 宋体;">对象是一个包装了本地资源的</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">结构，不能被</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">的垃圾回收器管理。加载图像而不卸载，会导致内存泄漏。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">使用</span><span lang="EN-US">ImageDescriptor</span><span style="font-family: 宋体;">来描述</span><span lang="EN-US">Image</span><span style="font-family: 宋体;">，</span><span lang="EN-US">ImageDescriptor</span><span style="font-family: 宋体;">可以通过</span><span lang="EN-US">getImageDescriptor()</span><span style="font-family: 宋体;">方法来获得。</span></p>
<span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">ImageCache</span><span style="font-size: 10.5pt; font-family: 宋体;">类为一个专门管理图像的类。<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.plugindev.addressbook.util;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.HashMap;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.Iterator;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.eclipse.jface.resource.ImageDescriptor;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.eclipse.swt.graphics.Image;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ImageCache&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;HashMap</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ImageDescriptor,&nbsp;Image</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;imageMap&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HashMap</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ImageDescriptor,&nbsp;Image</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;ImageCache&nbsp;instance;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">单例，获得ImageCache的唯一实例</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;ImageCache&nbsp;getInstance()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(instance&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ImageCache();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;instance;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">保证每个图像资源只有唯一的创建操作</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Image&nbsp;getImage(ImageDescriptor&nbsp;descriptor)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(descriptor&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;image&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(Image)&nbsp;imageMap.get(descriptor);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(image&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;descriptor.createImage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageMap.put(descriptor,&nbsp;image);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;image;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">卸载图像资源</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;dispose()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;iter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;imageMap.values().iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(iter.hasNext())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((Image)&nbsp;iter.next()).dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageMap.clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
ImageKey保存所有图像路径字符串描述符<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.plugindev.addressbook.util;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.eclipse.jface.resource.ImageDescriptor;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.plugindev.addressbook.Activator;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ImageKeys&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMAGE_CATEGORY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMAGE_PEOPLE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/people.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">类别图像</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_BUSINESS&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/business.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_FAMILY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/family.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_FRIENDS&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/friends.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_LOVER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/lover.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_MATE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/mate.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_ORDINARY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/ordinary.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_VIP&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/vip.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_UNKNOWN&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/unknown.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_CAT_TEACHER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/category/teacher.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">操作图像</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_TOOL_ADD&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/actions/add.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_TOOL_DELETE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/actions/delete.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_TOOL_DISABLEDELETE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/actions/delete_dis.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_TOOL_FILTER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/actions/filter.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">编辑器相关</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_FORM_BG&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/form_banner.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">$NON-NLS-1$</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_HORIZONTAL&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/th_horizontal.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">$NON-NLS-1$</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_VERTICAL&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/th_vertical.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">$NON-NLS-1$<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">ScrollBlock图标</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_SCROL_BASIC&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/basic.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_SCROL_PHONE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/phone.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_SCROL_AREA&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/area.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_SCROL_CONTACT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/editors/contact.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">向导相关</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_WIZARD_NEW&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/wizards/new_wiz.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">帮助相关</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;IMG_HELP&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">icons/help/help.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;ImageDescriptor&nbsp;getImageDescriptor(String&nbsp;path)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;Activator.getImageDescriptor(path);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/xujun7/aggbug/289256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-31 13:51 <a href="http://www.blogjava.net/xujun7/archive/2009/07/31/289256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发学习笔记 Views</title><link>http://www.blogjava.net/xujun7/archive/2009/07/31/289254.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Fri, 31 Jul 2009 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/31/289254.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/289254.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/31/289254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/289254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/289254.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">创建编辑器的上下文操作，</span><span lang="EN-US">targetID="#TextEditorContext"</span><span style="font-family: 宋体;">，为</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">默认文件编辑器的上下文菜单标识符。实现类必须实现</span><span lang="EN-US">IEditorActionDelegate</span><span style="font-family: 宋体;">接口。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">编辑器对应的</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">为：</span><span lang="EN-US">#TextEditorContext</span><span style="font-family: 宋体;">和</span><span lang="EN-US">&nbsp;#CompilationUnitEditorContext</span><span style="font-family: 宋体;">，定义好</span><span lang="EN-US">targetID</span><span style="font-family: 宋体;">，就把我们的插件</span><span lang="EN-US">id</span><span style="font-family: 宋体;">指向视图菜单的</span><span lang="EN-US">id</span><span style="font-family: 宋体;">了。这样</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">编辑器就会添加我们的菜单项了。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">targetID</span><span style="font-family: 宋体;">用来与特定的编辑器，查看器，菜单绑定。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">命令与键绑定，和操作相关联。命令只是操作的声明，操作的具体实现细节由操作本身来完成。将命令从操作实现中分离出来。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Org.eclipse.ui.commands</span><span style="font-family: 宋体;">扩展点</span> <span style="font-family: 宋体;">定义命令</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Org.eclipse.ui.bindings</span><span style="font-family: 宋体;">扩展点</span> <span style="font-family: 宋体;">与命令和键绑定</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">视图的实现类都必须实现</span><span lang="EN-US">org.eclipse.ui.IViewPart</span><span style="font-family: 宋体;">接口，一般都会集成</span><span lang="EN-US">org.eclipse.ui.ViewPart</span><span style="font-family: 宋体;">类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">视图的行为由一个实现了</span><span lang="EN-US">org.eclipse.ui.IViewPart</span><span style="font-family: 宋体;">接口的类定义</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">IStructuredContentProvider</span><span style="font-family: 宋体;">结构化内容提供者负责从输入对象中提取对象，把它传递给表格查看器进行显示。</span><span lang="EN-US">AddressViewContentProvider</span><span style="font-family: 宋体;">实现</span><span lang="EN-US">IStructuredContentProvider</span><span style="font-family: 宋体;">（内容与查看器的绑定）和</span> <span lang="EN-US">AddressManagerListener</span><span style="font-family: 宋体;">接口（监听模型变化）。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">AddressViewContentProvider</span><span style="font-family: 宋体;">通过</span><span lang="EN-US">AddressManager</span><span style="font-family: 宋体;">获取模型来提供显示</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">AddressViewContentProvider</span><span style="font-family: 宋体;">实现</span><span lang="EN-US">AddressManagerListener</span><span style="font-family: 宋体;">的</span><span lang="EN-US">addressesChanged</span><span style="font-family: 宋体;">方法。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">LableProvider</span><span style="font-family: 宋体;">标签提供者将获取内容提供者返回的一个表格行对象，并提取要显示到的列上的值。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">ITableLabelProvider</span><span style="font-family: 宋体;">接口要求实现</span><span lang="EN-US">getColumnText</span><span style="font-family: 宋体;">和</span><span lang="EN-US">getColumnImage</span><span style="font-family: 宋体;">两个主要的方法，</span><span lang="EN-US">getColumnText</span><span style="font-family: 宋体;">返回指定单元格的显示文本，</span><span lang="EN-US">getColumnImage</span><span style="font-family: 宋体;">返回指定单元格的显示图标。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">根据对表格列的判断来显示相应区域的文本和图像。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">public String getColumnText(Object
element, int columnIndex)</span><span style="font-family: 宋体;">，其中</span><span lang="EN-US">element</span><span style="font-family: 宋体;">表示单元格所在行的对象，</span><span lang="EN-US">columnIndex</span><span style="font-family: 宋体;">表示单元格所在的列，返回显示的文本。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">public Image getColumnImage(Object
element, int columnIndex)</span><span style="font-family: 宋体;">，其中</span><span lang="EN-US">element</span><span style="font-family: 宋体;">表示单元格所在行的对象，</span><span lang="EN-US">columnIndex</span><span style="font-family: 宋体;">表示单元格所在的列，返回此单元格的显示图标。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">ViewerSorter</span><span style="font-family: 宋体;">查看器排序器用于对内容提供者提供的元素进行排序，继承</span><span lang="EN-US">ViewerSorter</span><span style="font-family: 宋体;">类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个视图仅可以有一个内容提供者，一个标签提供者和一个排序器，但过滤器可以有很多个。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">ViewerFilter</span><span style="font-family: 宋体;">类用于确定显示内容提供者返回的哪些行对象，不显示哪些行对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">获取当前选中项，先查找视图，找到该视图后，调用</span><span lang="EN-US">getSelection()</span><span style="font-family: 宋体;">得到当前选择项，然后马上转换为</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">，以后的操作就是统一的了，因为有</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">接口。如果是在</span><span lang="EN-US">action</span><span style="font-family: 宋体;">中遇到这种需求，就将</span><span lang="EN-US">event</span><span style="font-family: 宋体;">调用</span><span lang="EN-US">getSelection()</span><span style="font-family: 宋体;">，然后转换为</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">，后续操作相同。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">的每个视图（</span><span lang="EN-US">View</span><span style="font-family: 宋体;">）都有自己的菜单和工具条，</span><span lang="EN-US">View</span><span style="font-family: 宋体;">通过与自己相关的</span><span lang="EN-US">IViewSite</span><span style="font-family: 宋体;">对象与这些东西打交道，确切的说，是通过这个</span><span lang="EN-US">IViewSite</span><span style="font-family: 宋体;">对象的</span><span lang="EN-US">IActionBars</span><span style="font-family: 宋体;">对象来管理，</span><span lang="EN-US">ActionBars</span><span style="font-family: 宋体;">对象负责菜单、工具条和状态栏。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">makeActions</span><span style="font-family: 宋体;">是创建操作，必要的</span><span lang="EN-US">IAction</span><span style="font-family: 宋体;">对象，这些对象可用在菜单、工具条里。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">hookContextMenu</span><span style="font-family: 宋体;">是把刚刚创建的</span><span lang="EN-US">IAction</span><span style="font-family: 宋体;">对象放进与</span><span lang="EN-US">View</span><span style="font-family: 宋体;">相关的</span><span lang="EN-US">MenuManager</span><span style="font-family: 宋体;">里。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">当触发了</span><span lang="EN-US">menu</span><span style="font-family: 宋体;">事件时，重新填充（</span><span lang="EN-US">fillContextMenu</span><span style="font-family: 宋体;">）</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">setRemoveAllWhenShown(true)</span><span style="font-family: 宋体;">的作用是清空以前显示的菜单项。不把</span><span lang="EN-US">removeAllWhenShow</span><span style="font-family: 宋体;">置为</span><span lang="EN-US">true</span><span style="font-family: 宋体;">的话，每点一下右键你就会看到菜单项多出一倍来。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用</span><span lang="EN-US">MenuManager</span><span style="font-family: 宋体;">可以创建出一个</span><span lang="EN-US">Menu</span><span style="font-family: 宋体;">对象，然后我们用表格的</span><span lang="EN-US">setMenu</span><span style="font-family: 宋体;">方法将表格控件与</span><span lang="EN-US">Menu</span><span style="font-family: 宋体;">控件联系在一起就好了。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">getSite().registerContextMenu(menuMgr,
viewer)</span><span style="font-family: 宋体;">这是</span><span lang="EN-US">context menu</span><span style="font-family: 宋体;">能不能显示的关键。一个视图中可以有多个</span><span lang="EN-US">context menu</span><span style="font-family: 宋体;">，而每一个</span><span lang="EN-US">context menu</span><span style="font-family: 宋体;">都必须注册给</span><span lang="EN-US">workbench</span><span style="font-family: 宋体;">。这需要通过调用</span><span lang="EN-US">org.eclipse.ui.IWorkbenchPartSite.registerContextMenu(MenuManager
menuManager, ISelectionProvider selectionProvider)</span><span style="font-family: 宋体;">或者（当有多个注册的</span><span lang="EN-US">context
menu</span><span style="font-family: 宋体;">时）</span><span lang="EN-US">org.eclipse.ui.IWorkbenchPartSite.registerContextMenu(String menuId,
MenuManager menuManager, ISelectionProvider selectionProvider)&nbsp;</span><span style="font-family: 宋体;">增加的参数</span><span lang="EN-US">menuId</span><span style="font-family: 宋体;">用于区分不同的</span><span lang="EN-US">context
menu</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">上下文菜单比工具栏多一步创建上下文菜单。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">属性视图支持所有实现</span><span lang="EN-US">IResource</span><span style="font-family: 宋体;">接口的资源。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个视图（</span><span lang="EN-US">View</span><span style="font-family: 宋体;">）希望得到另外一个视图显示的内容，或者选择的内容。在</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">中，比较标准的做法是通过</span><span lang="EN-US">ISelectionProvider</span><span style="font-family: 宋体;">和</span><span lang="EN-US">ISelectionListener</span><span style="font-family: 宋体;">来完成的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">为了解决这个问题，提供了所谓的</span><span lang="EN-US">Site</span><span style="font-family: 宋体;">，以及</span><span lang="EN-US">ISelectionService</span><span style="font-family: 宋体;">机制，来处理视图之间的简单的交互。简单的说，</span><span lang="EN-US">ViewSite</span><span style="font-family: 宋体;">提供了一个交互的中心点，其它</span><span lang="EN-US">View</span><span style="font-family: 宋体;">向</span><span lang="EN-US">ViewSite</span><span style="font-family: 宋体;">提供选择事件，或者向其注册监听器，而事件的触发与转发则由</span><span lang="EN-US">ViewSite()</span><span style="font-family: 宋体;">来完成。只需在</span><span lang="EN-US">View</span><span style="font-family: 宋体;">中实现</span><span lang="EN-US">ISelectionListener</span><span style="font-family: 宋体;">接口，就可以监听其他</span><span lang="EN-US">Workbench</span><span style="font-family: 宋体;">部分发生的选择事件。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体; color: black;">向</span><span lang="EN-US">Workbench</span><span style="font-family: 宋体;">注册监听器</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">getSite().getPage().addSelectionListener(</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;" lang="EN-US">this</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">向特定</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">WorkbenchID</span><span style="font-size: 10pt; font-family: 宋体; color: black;">注册监听器</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">getSite().getPage().addSelectionListener(String
WorkbenchID, ISelectionListener);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体; color: black;">并实现</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">selectionChanged</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法来处理监听器捕获到的事件。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个</span><span lang="EN-US">ISelectionProvider</span><span style="font-family: 宋体;">如果希望被别的</span><span lang="EN-US">View</span><span style="font-family: 宋体;">进行监听的话，则应该向其</span><span lang="EN-US">Site()</span><span style="font-family: 宋体;">进行注册。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">getViewSite().setSelectionProvider(</span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;" lang="EN-US">viewer</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">);<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">IPropertySource</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的实现类必须为每个显示在属性视图中的项创建一个属性描述符。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">ComboBoxPropertyDescriptor</span><span style="font-size: 10pt; font-family: 宋体; color: black;">可以在属性视图的单元格中显示复选框，但必须为其定义标签提供者和一组</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">String</span><span style="font-size: 10pt; font-family: 宋体; color: black;">数组为显示内容。</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">getText</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的参数是</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">getPropertyValue</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的返回值，这个返回值必须是整数。在</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">ComboBoxPropertyDescriptor</span><span style="font-size: 10pt; font-family: 宋体; color: black;">中，每个项是按照它们的索引号来区分的。在</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">initProperties</span><span style="font-size: 10pt; font-family: 宋体; color: black;">中，将类别名用整数表示。</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">Integer item = (Integer)element;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体; color: black;">表格查看器添加状态栏支持，则表格查看器添加监听器</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">ISelectionChangedListener</span><span style="font-size: 10pt; font-family: 宋体; color: black;">。</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><o:p></o:p></span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/289254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-31 13:42 <a href="http://www.blogjava.net/xujun7/archive/2009/07/31/289254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件体系结构</title><link>http://www.blogjava.net/xujun7/archive/2009/07/28/288759.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Tue, 28 Jul 2009 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/28/288759.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/288759.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/28/288759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/288759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/288759.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /><!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">插件是为系统提供功能的代码和</span><span lang="EN-US">/</span><span style="font-family: 宋体;">或数据的结构化包。可以以代码库（带有公共</span><span lang="EN-US"> [</span><span style="font-family: 宋体;">应用程序接口</span><span lang="EN-US">] API </span><span style="font-family: 宋体;">的</span><span lang="EN-US"> Java </span><span style="font-family: 宋体;">类）、平台扩展甚至文档的形式来提供功能。插件可以定义扩展点、定义良好的位置，其他插件可以在这些位置添加功能。</span><span lang="EN-US">&#8221;</span></p>
<p class="MsoNormal"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">使用</span><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">作为插件系统的基础。动态添加新插件和停止现有插件的能力。以动态方式管理组件生命周期的一个健壮的系统。</span></p>
<p class="MsoNormal"><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">是基于</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">的框架，旨在用于需要长运行时间、动态更新和对运行环境破坏最小的系统。</span></p>
<p class="MsoNormal"><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">规范定义了绑定包生命周期的基础架构和绑定包的交互方式。这些规则通过使用特殊</span><span lang="EN-US"> Java</span><span style="font-family: 宋体;">类加载器来强制执行。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在一般</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">应用程序中，</span><span lang="EN-US">CLASSPATH</span><span style="font-family: 宋体;">中的所有类都对所有其他类可见。相反，</span><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">类加载器基于</span><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">规范和每个绑定包的</span><span lang="EN-US">manifest.mf</span><span style="font-family: 宋体;">文件中指定的选项来限制类交互。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在</span><span lang="EN-US">3.1</span><span style="font-family: 宋体;">之前版本的</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">中，在每个插件的</span><span lang="EN-US">plugin.xml</span><span style="font-family: 宋体;">文件中定义插件依赖关系以及扩展和扩展点。在使用</span><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">的新版本</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">中，依赖关系信息被分解到</span><span lang="EN-US">manifest.mf</span><span style="font-family: 宋体;">文件中，而</span><span lang="EN-US"> plugin.xml</span><span style="font-family: 宋体;">文件只包含扩展和扩展点的</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">定义。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">插件级的依赖关系改为需要显式导出和导入包的依赖关系。插件开发人员必须进行专门选择来使插件中的功能可供外部使用。该限制允许内部包保留在内部，避免插件暴露不必要的类。</span><strong><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">的扩展和扩展点</span> <span style="font-family: 宋体;">可插拔</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">每一个希望被别的模块扩展的模块，都必须声明一系列的扩展点，即插座；希望在这个模块上扩展功能的模块，需要按照扩展点的什么来编写扩展，即插头。扩展点提供服务，扩展是要服务。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">延迟装载，只有在一个插件被其他模块调用的时候，才装载到内存中。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">通过将扩展的声明和实现分离，</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">实现类延迟装载。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">扩展点和扩展的声明都是通过</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">文件完成的，即清单文件</span><span lang="EN-US">MANIFEST.MF</span><span style="font-family: 宋体;">，描述了一个插件能够做什么，而</span><span lang="EN-US">JAVA</span><span style="font-family: 宋体;">代码则具体完成这些功能。系统启动时，只需搜索清单文件，建立一张索引表，知道有哪些插件以及能够提供什么服务。当</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">第一次启动时，</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">运行时会遍历</span><span lang="EN-US">plugins</span><span style="font-family: 宋体;">文件夹中的目录，扫描每个插件的清单文件信息，并建立一个内部模型来记录它所找到的每个插件的信息。</span></p>
<p class="MsoNormal"><span lang="EN-US">RCP</span><span style="font-family: 宋体;">包括基于</span><span lang="EN-US">OSGi</span><span style="font-family: 宋体;">的运行时框架</span><span lang="EN-US">Equniox</span><span style="font-family: 宋体;">，基于</span><span lang="EN-US">SWT/JFace</span><span style="font-family: 宋体;">的图形模块，</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">平台的</span><span lang="EN-US">UI</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Runtime</span><span style="font-family: 宋体;">模块。基于</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">的应用程序所需的最小插件集称为</span><span lang="EN-US">Eclipse Rich Client Platform</span><span style="font-family: 宋体;">（</span><span lang="EN-US">RCP</span><span style="font-family: 宋体;">）</span></p>
<p class="MsoNormal"><span lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="图片_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:366.75pt;height:241.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="eclipse" />
</v:shape><![endif]--><!--[if !vml]--><img alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/eclipse.jpg" width="489" height="322" /><br />
<!--[endif]--></span></p>
<p class="MsoNormal"><span lang="EN-US">Platform Runtime </span><span style="font-family: 宋体;">平台运行库是内核，它在启动时检查已安装了哪些插件，并创建关于它们的注册表信息。即在</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">运行时发现和管理插件。为降低启动时间和资源使用，它在实际需要任何插件时才加载该插件。除了内核外，其他每样东西都是作为插件来实现的。</span></p>
<p class="MsoNormal"><span lang="EN-US">Workspace </span><span style="font-family: 宋体;">工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件，以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息，比如文件创建、删除或更改。</span></p>
<p class="MsoNormal"><span lang="EN-US">Workbench </span><span style="font-family: 宋体;">工作台为</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">提供用户界面。它是使用标准窗口工具包（</span><span lang="EN-US">SWT</span><span style="font-family: 宋体;">）和一个更高级的</span><span lang="EN-US"> API</span><span style="font-family: 宋体;">（</span><span lang="EN-US">JFace</span><span style="font-family: 宋体;">）来构建的；</span><span lang="EN-US">SWT </span><span style="font-family: 宋体;">是</span><span lang="EN-US"> Java </span><span style="font-family: 宋体;">的</span><span lang="EN-US"> Swing/AWT GUI API </span><span style="font-family: 宋体;">的非标准替代者，</span><span lang="EN-US">JFace </span><span style="font-family: 宋体;">则建立在</span><span lang="EN-US"> SWT </span><span style="font-family: 宋体;">基础上，提供用户界面组件。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">插件可以扮演双重角色，其他插件服务的使用者和其他插件服务的提供者。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">manifest.mf<o:p></o:p></span></strong></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">Bundle-Activator</span></strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">该类用于启动和停止绑定包。该类扩展</span>
<span lang="EN-US">org.eclipse.core.runtime.Plugin</span><span style="font-family: 宋体;">，实现了</span> <span lang="EN-US">BundleActivator </span><span style="font-family: 宋体;">接口。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">Bundle-Version</span></strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">该属性指定绑定包的版本号。包导入和必需的绑定包规范可以包括绑定包版本号。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">Export-Package</span></strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">该属性指定要公共暴露给其他插件的所有包。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">Import-Package</span></strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">该属性指定要从必需插件中显式导入的所有包。默认情况下，必须为要启动的绑定包解析所有包。还可以将包导入指定为可选项，以支持包不存在的情况。显式导入的类在</span><span lang="EN-US"> Require-Bundle </span><span style="font-family: 宋体;">插件中的包之前解析。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">Require-Bundle</span></strong><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">该属性指定要在给定绑定包中导入使用的绑定包及其已导出的包。指定的绑定包在显式包导入之后解析。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">----------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------
<br />
|plugin&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|plugin&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;---------------&nbsp;&nbsp;|&nbsp;contibute&nbsp;&nbsp;|&nbsp;&nbsp;--------------&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;|&nbsp;ext&nbsp;point&nbsp;p&nbsp;|&nbsp;&lt;---------------&nbsp;|&nbsp;extension&nbsp;&nbsp;|&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;---------------&nbsp;&nbsp;|_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;--------------&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;---------------&nbsp;&nbsp;|&nbsp;|implement&nbsp;|&nbsp;&nbsp;--------------&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;|&nbsp;interface&nbsp;I&nbsp;|&nbsp;&lt;--|------------&nbsp;|&nbsp;class&nbsp;&nbsp;C&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|
<br />
|&nbsp;&nbsp;&nbsp;---------------&nbsp;&nbsp;|&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;--------------&nbsp;&nbsp;|
<br />
----------------------&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------/&nbsp;-------
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;create,&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------------------|<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">你可以把</span><span lang="EN-US">extension&nbsp;point</span><span style="font-family: 宋体;">想为接口</span><span lang="EN-US">,&nbsp;</span><span style="font-family: 宋体;">而我们扩展这些</span><span lang="EN-US">extension,</span><span style="font-family: 宋体;">其实就是实现了这个接口</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">假设</span><span lang="EN-US">plugin&nbsp;A</span><span style="font-family: 宋体;">定义了一个</span><span lang="EN-US">extension&nbsp;point,&nbsp;
plugin&nbsp;B</span><span style="font-family: 宋体;">定义了一个</span><span lang="EN-US">extension,</span><span style="font-family: 宋体;">是基于</span><span lang="EN-US">plugin&nbsp;A</span><span style="font-family: 宋体;">的这个</span><span lang="EN-US">extension&nbsp;point</span><span style="font-family: 宋体;">的</span><span lang="EN-US">,</span><span style="font-family: 宋体;">它的实现类是</span><span lang="EN-US">class&nbsp;C,</span><span style="font-family: 宋体;">那</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">启动后</span><span lang="EN-US">,&nbsp;</span><span style="font-family: 宋体;">会读取每个</span><span lang="EN-US">plugin</span><span style="font-family: 宋体;">的配置</span><span lang="EN-US">plugin.xml,</span><span style="font-family: 宋体;">然后发现</span><span lang="EN-US">plugin&nbsp;B</span><span style="font-family: 宋体;">有一个基于</span><span lang="EN-US">ext&nbsp;point&nbsp;p</span><span style="font-family: 宋体;">的扩展</span><span lang="EN-US">,</span><span style="font-family: 宋体;">那它就会用</span><span lang="EN-US">interface&nbsp;I</span><span style="font-family: 宋体;">作为对象</span><span lang="EN-US">,&nbsp;</span><span style="font-family: 宋体;">然后实例化一个</span><span lang="EN-US">class&nbsp;C,&nbsp;</span><span style="font-family: 宋体;">就等于实现了这个</span><span lang="EN-US">extension</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">eclipse</span><span style="font-family: 宋体;">的内部实现</span><span lang="EN-US"><br />
IPluginRegistry&nbsp;registry&nbsp;=&nbsp;Platform.getPluginRegistry(); <br />
IExtensionPoint&nbsp;extensionPoint&nbsp;=&nbsp;registry.getExtensionPoint(xpid);
//</span><span style="font-family: 宋体;">通过扩展点</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">获得扩展点</span><span lang="EN-US"><br />
IExtension[]&nbsp;extensions&nbsp;=&nbsp;extensionPoint.getExtensions(); //</span><span style="font-family: 宋体;">获得该扩展点的所有扩展</span><span lang="EN-US"><br />
//&nbsp;For&nbsp;each&nbsp;extension&nbsp;... <br />
for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;extensions.length;&nbsp;i++)&nbsp;{
<br />
&nbsp;&nbsp;&nbsp;&nbsp;IExtension&nbsp;extension&nbsp;=&nbsp;extensions[i]; <br />
&nbsp;&nbsp;&nbsp;&nbsp;IConfigurationElement[]&nbsp;elements&nbsp;=&nbsp;extension.getConfigurationElements();
//</span><span style="font-family: 宋体;">获得扩展点配置元素</span><span lang="EN-US"><br />
&nbsp;&nbsp;&nbsp;&nbsp;configurationElement[j].createExecutableExtension(&#8220;Class&#8221;);
//</span><span style="font-family: 宋体;">为每个回调对象创建实例</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230;<br />
} <br />
eclipse</span><span style="font-family: 宋体;">就是注册每一个</span><span lang="EN-US">extension</span><span style="font-family: 宋体;">和</span><span lang="EN-US">extension&nbsp;point</span><span style="font-family: 宋体;">，然后用</span><span lang="EN-US">extension&nbsp;point</span><span style="font-family: 宋体;">来实例化它对应的那个</span><span lang="EN-US">extension</span><span style="font-family: 宋体;">。</span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">发生事件并向其它对象请求处理的对象被称为</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">事件对象</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">，而处理事件的对象被称为</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">回调对象</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">。回调对象由扩展者插件定义，由宿主插件创建实例。</span></p>
<span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Eclipse</span><span style="font-size: 10.5pt; font-family: 宋体;">各</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">bundle</span><span style="font-size: 10.5pt; font-family: 宋体;">使用各自的</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">class loader</span><span style="font-size: 10.5pt; font-family: 宋体;">，若需要引用其他</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">bundle</span><span style="font-size: 10.5pt; font-family: 宋体;">类来动态创建实例，则需要使用类所在的</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">bundle</span><span style="font-size: 10.5pt; font-family: 宋体;">的</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">class loader</span><span style="font-size: 10.5pt; font-family: 宋体;">。</span>
<img src ="http://www.blogjava.net/xujun7/aggbug/288759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-28 16:07 <a href="http://www.blogjava.net/xujun7/archive/2009/07/28/288759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发学习笔记</title><link>http://www.blogjava.net/xujun7/archive/2009/05/13/270490.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Wed, 13 May 2009 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/05/13/270490.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/270490.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/05/13/270490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/270490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/270490.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
a:link, span.MsoHyperlink
{mso-style-noshow:yes;
mso-style-priority:99;
color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:purple;
mso-themecolor:followedhyperlink;
text-decoration:underline;
text-underline:single;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:498617482;
mso-list-type:hybrid;
mso-list-template-ids:-1845987820 -1174234824 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:%1、;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>对org.eclipse.ui.popupMenus扩展点<br />
</span></span></p>
<p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt;"><span lang="EN-US"><span>1、<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp; </span></span></span><!--[endif]--><span lang="EN-US">viewerContribution</span><span style="font-family: 宋体;">，也就是通过视图的</span><span lang="EN-US">id</span><span style="font-family: 宋体;">。这样只有视图</span><span lang="EN-US">id</span><span style="font-family: 宋体;">和给定的</span><span lang="EN-US">id</span><span style="font-family: 宋体;">一致的时候，它的弹出菜单才会增加我们定义的菜单项。实现类必须实现IObjectActionDelegate接口</span></p>
<p class="MsoListParagraph" style="margin-left: 18pt; text-indent: -18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>2、<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp; </span></span></span><!--[endif]--><span lang="EN-US">objectContribution</span><span style="font-family: 宋体;">，通过对象类型。当在视图里选定的对象类型和给定的一致时，在视图的弹出菜单增加我们定义的菜单项。实现类必须实现IViewerActionDelegate接口</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;对org.eclipse.ui.viewAction扩展点</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; viewContribution 添加视图工具栏与添加视图下拉子菜单。实现类都必须实现IViewActionDelegate接口</o:p></span></p>
<p class="MsoNormal">创建编辑器的上下文操作，targetID="#TextEditorContext"，为eclipse默认文件编辑器的上下文菜单标识符。实现类必须实现IEditorActionDelegate接口<br />
<span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><br />
<span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><img alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/ViewPart.jpg" width="785" height="542" /><br />
</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">所有视图必须实现</span><span lang="EN-US">org.eclipse.ui.IViewPart</span><span style="font-family: 宋体;">接口</span></p>
<p class="MsoNormal"><span lang="EN-US">IViewPart</span><span style="font-family: 宋体;">和</span><span lang="EN-US">IEditorPart</span><span style="font-family: 宋体;">都继承自</span><span lang="EN-US">IWorkbenchPart</span></p>
<p class="MsoNormal"><span lang="EN-US">ResourceNavigator</span><span style="font-family: 宋体;">即可被实例化，又可以被继承</span></p>
<p class="MsoNormal"><span lang="EN-US">ContentOutline</span><span style="font-family: 宋体;">和</span><span lang="EN-US">PropertySheet</span><span style="font-family: 宋体;">视图不能被再次实例化也无法被继承，它们仅有的实例是由工作台创建并管理的，可以被引用。可以通过</span><span lang="EN-US">IWorkbenchPage</span><span style="font-family: 宋体;">的</span><span lang="EN-US">showView()</span><span style="font-family: 宋体;">方法显示</span><span lang="EN-US">ContentOutline</span><span style="font-family: 宋体;">和</span><span lang="EN-US">PropertySheet</span><span style="font-family: 宋体;">。</span><span lang="EN-US">BookmarkNavigator</span><span style="font-family: 宋体;">和</span><span lang="EN-US">TaskList</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">视图模式</span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://mobius.inria.fr/eclipse-doc/org/eclipse/ui/IWorkbenchPage.html#VIEW_ACTIVATE"><strong>VIEW_ACTIVATE</strong></a>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show view mode that
indicates the view should be made visible and activated.</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">激活定义视图的插件并在当前页面中显示视图</span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://mobius.inria.fr/eclipse-doc/org/eclipse/ui/IWorkbenchPage.html#VIEW_CREATE"><strong>VIEW_CREATE</strong></a>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show view mode that
indicates the view should be made created but not necessarily be made visible.</span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://mobius.inria.fr/eclipse-doc/org/eclipse/ui/IWorkbenchPage.html#VIEW_VISIBLE"><strong>VIEW_VISIBLE</strong></a>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show view mode that
indicates the view should be made visible.</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">该视图可见，但不会立即显示该视图</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">createPartControl(Composite)</span><span style="font-family: 宋体;">定义视图的用户界面。</span></p>
<p class="MsoNormal"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;" lang="EN-US">TableViewer</span><span style="font-family: 宋体;">的责任是用特定的对象填充到</span><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;" lang="EN-US">Table</span><span style="font-family: 宋体;">窗体组件中。是我们最终在窗体要看到的对象。</span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">IStructuredContentProvider</span><span style="font-family: 宋体;">和</span><span lang="EN-US">ITableLabelProvider</span><span style="font-family: 宋体;">的实现类是用来帮助</span><span lang="EN-US">TableViewer</span><span style="font-family: 宋体;">来完成这个任务的。</span><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">结构化内容提供者</span><span lang="EN-US">IStructuredContentProvider</span><span style="font-family: 宋体;">负责从输入对象中提取对象，并把它们传递给表格查看器进行显示。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">标签提供者</span><span lang="EN-US">LabelProvider</span><span style="font-family: 宋体;">将获得内容提供者返回的一个表格行对象，并提取要显示到列上的值。</span><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">所以，要实现一个在</span><span lang="EN-US">TableView</span><span style="font-family: 宋体;">中显示特定对象只需要实现</span><span lang="EN-US">IStructuredContentProvider</span><span style="font-family: 宋体;">实现类的</span><span lang="EN-US">getElements</span><span style="font-family: 宋体;">方法。和</span><span lang="EN-US">ITableLabelProvider</span><span style="font-family: 宋体;">的</span><span lang="EN-US">getColumnText</span><span style="font-family: 宋体;">和</span><span lang="EN-US">getColumnImage</span><span style="font-family: 宋体;">方法。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">查看器排序器</span><span lang="EN-US">ViewerSorter</span><span style="font-family: 宋体;">用于对内容提供者提供的元素进行排序。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">视图过滤器</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="../../raul/archive/2008/01/03/172567.html"><span style="font-family: 宋体; color: windowtext; text-decoration: none;" lang="EN-US"><span lang="EN-US">获取到的有关</span></span><span style="color: windowtext; text-decoration: none;">&#8220;</span><span style="font-family: 宋体; color: windowtext; text-decoration: none;" lang="EN-US"><span lang="EN-US">当前选择项</span></span><span style="color: windowtext; text-decoration: none;">&#8221;</span><span style="font-family: 宋体; color: windowtext; text-decoration: none;" lang="EN-US"><span lang="EN-US">内容</span></span></a></span><span style="font-family: 宋体;">，先查找视图，找到该视图后，调用</span><span lang="EN-US">getSelection()</span><span style="font-family: 宋体;">得到当前选择项，然后马上转换为</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">，以后的操作就是统一的了，因为有</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">接口。如果是在</span><span lang="EN-US">action</span><span style="font-family: 宋体;">中遇到这种需求，就将</span><span lang="EN-US">event</span><span style="font-family: 宋体;">调用</span><span lang="EN-US">getSelection()</span><span style="font-family: 宋体;">，然后转换为</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">，后续操作相同。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">KeyEvent</span></p>
<p class="MsoNormal"><span lang="EN-US">Character, </span><span style="font-family: 宋体;">就是按键对应字符</span></p>
<p class="MsoNormal"><span lang="EN-US">stateMask</span><span style="font-family: 宋体;">则是用来检测</span><span lang="EN-US">Alt</span><span style="font-family: 宋体;">，</span><span lang="EN-US">Shift</span><span style="font-family: 宋体;">，</span><span lang="EN-US">Ctrl</span><span style="font-family: 宋体;">这些键有没有同时被按下。</span><span lang="EN-US">stateMask</span><span style="font-family: 宋体;">与这些键的键码进行位与运算，如果得到的结果不是</span><span lang="EN-US">0</span><span style="font-family: 宋体;">就说明这些键被按下了，比如如果</span><span lang="EN-US">stateMake &amp; SWT.ALT</span><span style="font-family: 宋体;">不为零，我们就可以认为</span><span lang="EN-US">Alt</span><span style="font-family: 宋体;">键被按下了。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">属性视图支持所有实现</span><span lang="EN-US">IResource</span><span style="font-family: 宋体;">接口的资源。</span></p>
<p class="MsoNormal"><span lang="EN-US">Java</span><span style="font-family: 宋体;">是一种强类型语言，每个实例都必须有指定的类型。实际上，</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">类型有两种声明类型和运行时类型</span><span lang="EN-US">(</span><span style="font-family: 宋体;">也可以相应的说是静态类型</span>
<span style="font-family: 宋体;">和动态类型</span><span lang="EN-US">)</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">可以把</span><span lang="EN-US">IAdaptable</span><span style="font-family: 宋体;">想象为一个能够<strong>动态进行类型转换</strong>的途径。其实这种机制可以让我们将目标类转换为它并没有实现的接口。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">大部分</span><span lang="EN-US">IAdaptable</span><span style="font-family: 宋体;">的实现是一些</span><span lang="EN-US">if</span><span style="font-family: 宋体;">语句的叠加，实现</span><span lang="EN-US">getAdapter()</span><span style="font-family: 宋体;">方法。</span><span lang="EN-US">getAdapter()</span><span style="font-family: 宋体;">方法的调用者需要传入一个代表特定接口的</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象，该方法则会返回一个具有该接口的对象。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">中，比较标准的做法是通过</span><span lang="EN-US">ISelectionProvider</span><span style="font-family: 宋体;">和</span><span lang="EN-US">ISelectionListener</span><span style="font-family: 宋体;">来完成的。</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">为了解决这个问题，提供了所谓的</span><span lang="EN-US">Site</span><span style="font-family: 宋体;">，以及</span><span lang="EN-US">ISelectionService</span><span style="font-family: 宋体;">机制，来处理试图之间的简单的交互。简单的说，</span><span lang="EN-US">ViewSite</span><span style="font-family: 宋体;">提供了一个交互的中心点，其它</span><span lang="EN-US">View</span><span style="font-family: 宋体;">向</span><span lang="EN-US">ViewSite</span><span style="font-family: 宋体;">提供选择事件，或者向其注册监听器，而事件的触发与转发则由</span><span lang="EN-US">ViewSite()</span><span style="font-family: 宋体;">来完成。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">注意</span><span lang="EN-US">SelectionProvider</span><span style="font-family: 宋体;">和</span><span lang="EN-US">SelectionListener</span><span style="font-family: 宋体;">并不直接对应。这个地方有一点容易混淆，就是</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">实际上提供有两套与</span><span lang="EN-US">Selection</span><span style="font-family: 宋体;">相关的事件与接口：</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">ISelectionChangedListener
&lt;--&gt; ISelectionProvider</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">这个是</span><span lang="EN-US">JFace</span><span style="font-family: 宋体;">中的选择监听机制，对试图或者控件而言，它提供对原始的选择事件的通知与响应。</span><span lang="EN-US">ISelectionProvider</span><span style="font-family: 宋体;">需要注册在</span><span lang="EN-US">Site</span><span style="font-family: 宋体;">上，以供</span><span lang="EN-US">ISelectionSerivce</span><span style="font-family: 宋体;">使用，将选择事件扩散到其他的</span><span lang="EN-US">ISelectionListener</span><span style="font-family: 宋体;">中。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">ISelectionListener
&lt;--&gt; ISelectionService</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">这个是在</span><span lang="EN-US">Site</span><span style="font-family: 宋体;">中使用的，</span><span lang="EN-US">ISelectionService</span><span style="font-family: 宋体;">不需要自己实现，已经实现好了，</span><span lang="EN-US">ISelectionListener</span><span style="font-family: 宋体;">则需要注册到</span><span lang="EN-US">ISelectionService</span><span style="font-family: 宋体;">上，以对其它</span><span lang="EN-US">SelectionProvider</span><span style="font-family: 宋体;">的事件响应进行监听。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在</span><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">本身的实现中，</span><span lang="EN-US">PropertySheet</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Outline</span><span style="font-family: 宋体;">都使用了这种机制。不过需要注意的是，缺省的</span><span lang="EN-US">PropertySheet</span><span style="font-family: 宋体;">需要接受一个</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">，而不仅仅是一个</span><span lang="EN-US">ISelection</span><span style="font-family: 宋体;">。因此，如果</span><span lang="EN-US">ISeletionProvider</span><span style="font-family: 宋体;">需要提供一个能够让</span><span lang="EN-US">PropertySheet</span><span style="font-family: 宋体;">进行显示的对象的话，除了除了要实现</span><span lang="EN-US">ISelection</span><span style="font-family: 宋体;">接口外，还需要对其进行封装成一个</span><span lang="EN-US">IStructuredSelection</span><span style="font-family: 宋体;">。这个比较简单，直接调用</span><span lang="EN-US">StructuredSelection</span><span style="font-family: 宋体;">构造函数即可。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Protected</span><span style="font-family: 宋体;">类型不希望其他类使用该方法。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">A site maintains the context for a part,<br />
including the part, its pane, active contributions, selection provider, etc.<br />
Together, these components make up the complete behavior for a<br />
part as if it was implemented by one person. <br />
<br />
The PartSite lifecycle is as follows ..<br />
<br />
&nbsp; (1) a site is constructed <br />
&nbsp; (2) a part is constructed and stored in the part <br />
&nbsp; (3) the site calls part.init() <br />
&nbsp; (4) a pane is constructed and stored in the site <br />
&nbsp; (5) the action bars for a part are constructed and stored in the site <br />
&nbsp; (6) the pane is added to a presentation <br />
&nbsp; (7) the SWT widgets for the pane and part are created <br />
&nbsp; (8) the site is activated, causing the actions to become visible</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/270490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-05-13 21:19 <a href="http://www.blogjava.net/xujun7/archive/2009/05/13/270490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Eclipse Action 深入学习笔记</title><link>http://www.blogjava.net/xujun7/archive/2009/05/07/269467.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Thu, 07 May 2009 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/05/07/269467.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/269467.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/05/07/269467.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/269467.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/269467.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Cxujun%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CUsers%5Cxujun%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cxujun%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:微软雅黑;
panose-1:2 11 5 3 2 2 4 2 2 4;
mso-font-charset:134;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-2147483001 705641554 22 0 262175 0;}
@font-face
{font-family:"\@微软雅黑";
panose-1:2 11 5 3 2 2 4 2 2 4;
mso-font-charset:134;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-2147483001 705641554 22 0 262175 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span style="font-size: 10.5pt; font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;">以前做插件用到的<span lang="EN-US">ActionSet</span>都只是依葫芦画瓢<span lang="EN-US">,</span>没有真正理解它<span lang="EN-US">,</span>现在开始好好学习学习<span lang="EN-US">,</span>主要是看<span lang="EN-US">"Building
Commercial-Quality Plug-ins"</span>写的<span lang="EN-US"> <br />
<br />
Action</span>的组成包括几个部分<span lang="EN-US">,</span>一个是在<span lang="EN-US">plugin.xml</span>中的声明<span lang="EN-US">,</span>一个是在<span lang="EN-US">Eclipse UI</span>中会用到的<span lang="EN-US">IAction</span>实例化对象<span lang="EN-US">, </span>另一个是封装在<span lang="EN-US">IActionDelegate</span>中的<span lang="EN-US">action</span>执行代码<span lang="EN-US">. action</span>的实例化是基于<span lang="EN-US">plugin.xml</span>配置文件和<span lang="EN-US">IActionDelegate</span>定义的<span lang="EN-US">,Eclipse</span>可以先在界面上将<span lang="EN-US">action</span>显示出 来<span lang="EN-US">,</span>直到用户点击了菜单或者工具条按钮才会去真正的加载插件<span lang="EN-US">,</span>这也就是所谓的<span lang="EN-US">Eclipse</span>的延迟加载机制<span lang="EN-US"> <br />
<br />
IActionDelegate</span>有几个子类需要说明一下<span lang="EN-US">: <br />
IActionDelegate2 </span>如果实现<span lang="EN-US">IActionDelegate</span>需要一些其他的信息<span lang="EN-US">,</span>而这些信息在<span lang="EN-US">IActionDelegate</span>销毁时需要同时被销毁时<span lang="EN-US">, </span>它可以提供相关是生命周期事件方法来处理<span lang="EN-US"> <br />
IEditorActionDelegate </span>是跟<span lang="EN-US">editor</span>相关的<span lang="EN-US"> <br />
IObjectActionDelegate </span>是跟上下文菜单相关的<span lang="EN-US"> <br />
IViewActionDelegate </span>是跟<span lang="EN-US">view</span>相关的<span lang="EN-US"> <br />
IWorkbenchWindowActionDelegate</span>是跟<span lang="EN-US">menubar</span>和<span lang="EN-US">toolbar</span>相关的<span lang="EN-US"> <br />
<br />
Actions</span>和<span lang="EN-US">Eclipse</span>中的其他东东一样<span lang="EN-US">,</span>也是通过扩展点<span lang="EN-US">org.eclipse.ui.actionSets</span>来添加到<span lang="EN-US">Eclipse IDE</span>的各个地方<span lang="EN-US">,actions</span>的外在表现形式主要有<span lang="EN-US">menubar, toolbar, context
menu</span>这样几种<span lang="EN-US"> <br />
<br />
</span>在<span lang="EN-US">actionSets</span>的下级节点是<span lang="EN-US">actionSet, </span>它有几个属性<span lang="EN-US">,id,label</span>都不用说了<span lang="EN-US">,</span>还有一个<span lang="EN-US">visible</span>属性<span lang="EN-US">,</span>表示在打开<span lang="EN-US">Eclipse</span>时是否显示该<span lang="EN-US">action,</span>通常我们可以通过<span lang="EN-US"> Window &gt; Customize Perspective...</span>来设置<span lang="EN-US">action</span>是否可见<span lang="EN-US"> <br />
<br />
</span>在<span lang="EN-US">actionSet</span>下可以添加<span lang="EN-US">menu</span>节点<span lang="EN-US">, </span>它的<span lang="EN-US">id,label</span>属性不用说了<span lang="EN-US">,</span>其中的<span lang="EN-US">path</span>是用来指定菜单的显示位置的<span lang="EN-US">,</span>一般设置为<span lang="EN-US">additions <br />
<br />
action</span>并不是直接添加到<span lang="EN-US">menu</span>上的<span lang="EN-US">, </span>而是跟<span lang="EN-US">menu</span>内部的<span lang="EN-US">group</span>关联的<span lang="EN-US">,</span>所以我们必须先在<span lang="EN-US">menu</span>下创建<span lang="EN-US">group,</span>即新建<span lang="EN-US">groupMarker,
</span>其<span lang="EN-US">name</span>必须保证在当前<span lang="EN-US">menu</span>下唯一<span lang="EN-US">, menu</span>还有一种叫<span lang="EN-US">separator</span>的<span lang="EN-US">group, </span>在<span lang="EN-US">separator group</span>处添加的<span lang="EN-US">menu item</span>会在这个组中的第一个菜单项上面添加一条水平线<span lang="EN-US">.</span>而<span lang="EN-US">groupMarker</span>则不会有线<span lang="EN-US">, </span>当其他<span lang="EN-US">action</span>要添加到该<span lang="EN-US">menu group</span>下时<span lang="EN-US">,</span>使用水平线进行分组就显得非常必要<span lang="EN-US"> <br />
<br />
group</span>只是用来标识<span lang="EN-US">menu</span>的位置<span lang="EN-US">,</span>即指这个位置可以添加菜单项<span lang="EN-US">, </span>而不是实际的<span lang="EN-US">menu item, </span>实际的<span lang="EN-US">menu item</span>是<span lang="EN-US">action <br />
<br />
</span>因为<span lang="EN-US">menu</span>会有层次关系<span lang="EN-US">,</span>所以<span lang="EN-US">actionSet</span>中专门用一个<span lang="EN-US">menu</span>节点来表现这种层次关系<span lang="EN-US">, </span>而<span lang="EN-US">toolbar</span>则没有这种情况<span lang="EN-US">,</span>所以这里没有提供<span lang="EN-US">toolbar</span>节点<span lang="EN-US"> <br />
<br />
</span>在<span lang="EN-US">actionSet</span>下添加<span lang="EN-US">action</span>就是最终我们要<span lang="EN-US">toolbar</span>上显示的按钮和<span lang="EN-US">menubar</span>上的<span lang="EN-US">menu item, </span>这里有几个属性<span lang="EN-US">, id</span>和<span lang="EN-US">label</span>不用说了<span lang="EN-US">,menuBarPath</span>是<span lang="EN-US">menu</span>要显示的位置<span lang="EN-US">, </span>比如<span lang="EN-US">"com.qualityeclipse.favorites.workbenchMenu/content",</span>这个值就是<span lang="EN-US">actionSet+" /"+group name, toolbarPath </span>就是<span lang="EN-US">toolbar item</span>的显示位置<span lang="EN-US">, </span>比如<span lang="EN-US">"Normal/additions", </span>还有几个属性不常用到<span lang="EN-US">,</span>但是有必要解释一下<span lang="EN-US"> <br />
<br />
allowLabelUpdate</span>这个要在<span lang="EN-US">retarget</span>属性为<span lang="EN-US">true</span>的时候有效<span lang="EN-US">,</span>还不是很清楚<span lang="EN-US"> <br />
<br />
class </span>是<span lang="EN-US">menu</span>或<span lang="EN-US">button</span>要执行的动作<span lang="EN-US">, </span>如果使用的是<span lang="EN-US">pulldown</span>风格的<span lang="EN-US">action,</span>还需要实现<span lang="EN-US">IWorkbenchWindowPulldownDelegate</span>接口<span lang="EN-US">,</span>它的构造函数是无
参数的<span lang="EN-US">,</span>如果要传递参数<span lang="EN-US">,</span>还需要是要实现<span lang="EN-US">IExecutableExtension </span>接口<span lang="EN-US">, </span>这个接口还不是很清楚<span lang="EN-US"> <br />
<br />
definitionId </span>这个是用来指定<span lang="EN-US">action</span>对应的<span lang="EN-US">command</span>唯一标识符的<span lang="EN-US"> <br />
<br />
enablesFor </span>是一个表达式<span lang="EN-US">,</span>用来表示当前<span lang="EN-US">action</span>是否可用<span lang="EN-US"> <br />
<br />
retarget </span>不是很理解<span lang="EN-US"> <br />
<br />
state</span>主要是针对<span lang="EN-US">style</span>属性为<span lang="EN-US">radio</span>和<span lang="EN-US">toggle</span>的<span lang="EN-US">,</span>表示当前<span lang="EN-US">action</span>是否被选中<span lang="EN-US"> <br />
<br />
style:</span>默认是<span lang="EN-US">push,</span>还有<span lang="EN-US">radio,</span>表示一组<span lang="EN-US">menu</span>中只能有一个被选中<span lang="EN-US">, toggle</span>当它是<span lang="EN-US">checkbox</span>好了<span lang="EN-US">, pulldown</span>说明是子菜单项或者是下拉<span lang="EN-US">toolbar menu <br />
<br />
</span>对于<span lang="EN-US">action</span>所使用的图标<span lang="EN-US">,</span>我们可以从<span lang="EN-US">Eclipse</span>下的<span lang="EN-US">plugins\org.eclipse.ui_3.1.2.jar </span>和<span lang="EN-US"> plugins\org.eclipse.jdt.ui_3.1.2.jar</span>得到一些<span lang="EN-US">gif</span>的图片<span lang="EN-US"> <br />
<br />
Eclipse</span>中<span lang="EN-US">actionSet</span>以及下级元素都是有<span lang="EN-US">id</span>的<span lang="EN-US">,</span>而且他们可以通过一种<span lang="EN-US">path</span>的方式来进行指定<span lang="EN-US">,</span>比如<span lang="EN-US"> com.qualityeclipse.favorites.workbenchMenu/content,</span>如果上一级节点是<span lang="EN-US">workbench menu bar</span>或者是<span lang="EN-US">view content menu</span>的话<span lang="EN-US">,</span>那么它的上一级节点是不用指定的<span lang="EN-US">,</span>只要指定<span lang="EN-US">group</span>就好<span lang="EN-US"> <br />
<br />
</span>为了方便其他的插件的<span lang="EN-US">action</span>能添加到该插件的<span lang="EN-US">actionSet</span>下<span lang="EN-US">, </span>在为插件定义<span lang="EN-US">group</span>的时候<span lang="EN-US">, </span>会添加一个为<span lang="EN-US">additions</span>的<span lang="EN-US">group, additions</span>是<span lang="EN-US">eclipse</span>使用的一个默认标识符<span lang="EN-US">,</span>用来表示其他<span lang="EN-US">action</span>或<span lang="EN-US">menu</span>显示的位置<span lang="EN-US">, </span>在<span lang="EN-US">class</span>中它的对应常量是<span lang="EN-US">IWorkbenchActionConstants.MB_ADDITIONS,
</span>比如我们定义了一个<span lang="EN-US">menu,</span>指定其<span lang="EN-US">path</span>为<span lang="EN-US">additions, </span>这表示我们的<span lang="EN-US">menu</span>将添加到<span lang="EN-US">window</span>的左边<span lang="EN-US">,</span>因为这个就是<span lang="EN-US">workbench
menubar</span>的<span lang="EN-US">additons</span>所在的位置<span lang="EN-US">, </span>如果指定的是<span lang="EN-US">window/additions, </span>那么将作为子菜单项添加到<span lang="EN-US">window</span>下<span lang="EN-US"> <br />
<br />
</span>当一个<span lang="EN-US">actionSet</span>下定义的<span lang="EN-US">action</span>跟另一个<span lang="EN-US">actionSet</span>下定义的<span lang="EN-US">menu</span>关联的时候将发生<span lang="EN-US">Invalid Menu Extension (Path is invalid): some.action.id</span>的异常<span lang="EN-US">, </span>为了避免这种问题<span lang="EN-US">,menu</span>需要在两个<span lang="EN-US">actionSet</span>都定义<span lang="EN-US"> <br />
<br />
toolbarPath</span>的指定也跟<span lang="EN-US">menuBarPath</span>有同样的情况<span lang="EN-US">, </span>比如定义为<span lang="EN-US">Normal/additions, </span>这里的<span lang="EN-US">Normal</span>指的是<span lang="EN-US">workbench toolbar, additions</span>就是<span lang="EN-US">action</span>要显示的<span lang="EN-US">group</span>位置<span lang="EN-US"> <br />
<br />
action</span>的<span lang="EN-US">class</span>属性是封装了执行动作的类<span lang="EN-US">,</span>它实现了<span lang="EN-US">IWorkbenchWindowActionDelegate, </span>在它里面有几个方法需要介绍一下<span lang="EN-US">, </span>一个是<span lang="EN-US">selectionChanged, </span>用来动态修改<span lang="EN-US">action</span>的<span lang="EN-US">state</span>状态值<span lang="EN-US">, </span>是否可用<span lang="EN-US">,</span>以及<span lang="EN-US">action</span>的<span lang="EN-US">text</span>属性等<span lang="EN-US">, </span>比如对于<span lang="EN-US">enableFor</span>属性来说<span lang="EN-US">,
</span>它根据选中对象的数量来判断<span lang="EN-US">action</span>是否可用<span lang="EN-US">, </span>但是通过<span lang="EN-US">selectionChanged</span>可以通过当前选定的对象的情况来调用<span lang="EN-US">setEnable()</span>方法从而更精确的控制<span lang="EN-US">action</span>是否可用<span lang="EN-US">, </span>有时候当插件还没有加载<span lang="EN-US">,</span>在调用<span lang="EN-US">action</span>的<span lang="EN-US">run</span>方法时会加载插件<span lang="EN-US">,</span>这时可能在调用<span lang="EN-US">run()</span>方法之前没有调用<span lang="EN-US">selectedChange</span>方法<span lang="EN-US">, </span>因此在<span lang="EN-US">run()</span>方面里面需要写一些防护性代码<span lang="EN-US">,</span>比如空值的判断之类的<span lang="EN-US">, </span>另外<span lang="EN-US">run()</span>是在主<span lang="EN-US">UI</span>线程中执行的<span lang="EN-US">,</span>因此<span lang="EN-US">,</span>如果该执行耗时较长<span lang="EN-US">,</span>需要将其放到后台线程中执行<span lang="EN-US">. <br />
<br />
</span>插件运行之后在<span lang="EN-US">menubar</span>和<span lang="EN-US">toolbar</span>上看到定义的<span lang="EN-US">actionSet,</span>可以试试下面的方法<span lang="EN-US">: <br />
</span>在<span lang="EN-US">Window &gt; Customize Perspective... </span>下看看是不是<span lang="EN-US">actionSet</span>没有选中<span lang="EN-US"> <br />
</span>使用<span lang="EN-US">Window &gt; Reset Perspective</span>刷新当前视图<span lang="EN-US"> <br />
</span>关闭重新打开当前视图<span lang="EN-US"> <br />
</span>如果还没有出来<span lang="EN-US">,</span>可以在在<span lang="EN-US">run</span>或者<span lang="EN-US">debug</span>的设置中将<span lang="EN-US">"Clear workspace data before
launching "</span>选中<span lang="EN-US">, </span>然后再启动运行<span lang="EN-US"> <br />
<br />
</span>虽然通过扩展点可以非常方便的在<span lang="EN-US">Eclipse</span>上添加<span lang="EN-US">,</span>但是这个玩意儿多了也不是什么好事<span lang="EN-US">, </span>可能会降低用户体验<span lang="EN-US">,</span>因此需要进行控制<span lang="EN-US">,
actionSet</span>扩展点也有相关的设置来指定是否可见<span lang="EN-US">, </span>而且还可以调用<span lang="EN-US">IActionSetDescriptor.setInitiallyVisible() </span>来控制顶层菜单是否可见<span lang="EN-US">, </span>另一种解决办法就是在首选项中提供一个<span lang="EN-US">checkbox</span>让用户决定是否显示顶层菜单<span lang="EN-US">,</span>其编程实现就是在代码中调用<span lang="EN-US">
IActionSetDescriptor.setInitiallyVisible()</span>和<span lang="EN-US">
IWorkbenchPage.hideActionSet()</span>来进行控制<span lang="EN-US"><br />
</span>来自：<span lang="EN-US">http://hi.baidu.com/xianle/blog</span></span><span style="font-size: 10.5pt;" lang="EN-US"><u1:p></u1:p><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10.5pt;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/269467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-05-07 18:53 <a href="http://www.blogjava.net/xujun7/archive/2009/05/07/269467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>