锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鑿滃崟鏄悇縐嶈蔣浠跺強寮鍙戝鉤鍙頒細鎻愪緵鐨勫繀澶囧姛鑳斤紝Eclipse 涔熶笉渚嬪錛屾彁渚涗簡涓板瘜鐨勮彍鍗曪紝鍖呮嫭涓昏彍鍗曪紙Main Menu錛夛紝瑙嗗浘 / 緙栬緫鍣ㄨ彍鍗曪紙ViewPart/Editor Menu錛夊拰涓婁笅鏂囪彍鍗曪紙Context Menu錛夈傚湪 Eclipse 涓紝鍑犱箮鎵鏈夌殑 Workbench Part 鎻愪緵浜嗕漢鎬у寲鐨勮彍鍗曪紝澶уぇ鏂逛究浜嗙敤鎴風殑鎿嶄綔銆傚洜姝わ紝濡備綍鎵╁睍 Eclipse 鐨勮彍鍗曞姛鑳斤紝騫跺疄鐜扮壒瀹氫簬鎴戜滑鑷繁鎻掍歡鐨勮彍鍗曪紝鏄彃浠跺紑鍙戣呭繀欏繪帉鎻$殑閲嶈鎶鑳斤紝鍚屾椂錛孍clipse 鎻愪緵浜嗕赴瀵岀殑鎵╁睍鐐逛緵寮鍙戜漢鍛樹嬌鐢ㄣ傛湰鏂囧皢棣栧厛浠嬬粛 Eclipse 涓殑鑿滃崟錛岀劧鍚庤緇嗚鏄庡浣曡繘琛屾墿灞曪紝鏈鍚庝互涓涓疄渚嬬殑褰㈠紡寮曞璇昏呮繁鍏ョ悊瑙?Eclipse 鐨勮彍鍗曞姛鑳姐?/p>
銆銆寮曡█ 銆銆Eclipse 鍏鋒湁涓板瘜鐨勮彍鍗曞姛鑳斤紝緇欏紑鍙戜漢鍛樻彁渚涗簡寰堝ソ鐨勭敤鎴蜂綋楠屻傛諱綋鑰岃█錛孍clipse 鑿滃崟縐嶇被鍖呮嫭瑙嗗浘 / 緙栬緫鍣ㄨ彍鍗曪紝涓昏彍鍗曪紙Main Menu錛夛紝瑙嗗浘 / 緙栬緫鍣ㄨ彍鍗曪紙ViewPart/EditorPart Menu錛夊拰涓婁笅鏂囪彍鍗曪紙Context Menu錛夈傛彃浠跺紑鍙戜漢鍛橀氳繃鐏墊椿搴旂敤榪欎簺鑿滃崟錛屽彲浠ョ粰鐢ㄦ埛鎻愪緵寰堝ソ鐨勪綋楠屻傜敱浜庤鍥懼拰緙栬緫鍣ㄨ彍鍗曞姛鑳界被浼鹼紝鍥犳鏈枃閲嶇偣璁茶堪瑙嗗浘鑿滃崟錛堣鍥句笅鎷夎彍鍗曞強鍏跺伐鍏鋒爮鑿滃崟錛夛紝闄ゆ涔嬪錛岃繕灝嗚榪頒富鑿滃崟鍜屼笂涓嬫枃鑿滃崟銆?/p>
銆銆濡傚浘 1 鎵紺轟負 Project Explorer 瑙嗗浘鐨勮彍鍗曪紝鍖呮嫭瑙嗗浘涓嬫媺鑿滃崟鍜屽伐鍏鋒爮鑿滃崟錛堟姌鍙犳爲鑺傜偣錛夈傞氬父鑰岃█錛屽嚭鐜板湪瑙嗗浘宸ュ叿鏍忕殑鑿滃崟閮戒細鍑虹幇鍦ㄨ鍥劇殑涓嬫媺鑿滃崟錛屼篃灝辨槸璇達紝姣旇緝甯哥敤鐨勮鍥捐彍鍗曟斁鍦ㄨ鍥劇殑宸ュ叿鏍忋?/p>
鍥?1. Project Explorer 瑙嗗浘鐨勮彍鍗?/p>
銆銆濡傚浘 2 鎵紺轟負 Project Explorer 瑙嗗浘涓殑涓婁笅鏂囪彍鍗曪紝鍙湁褰撴垜浠彸閿偣鍑繪椂鎵嶄細鍑虹幇銆傞氬父鑰岃█錛屽嚭鐜伴鐜囪緝楂樼殑鑿滃崟欏規墠浼氬嚭鐜板湪鑿滃崟涓備笂涓嬫枃鑿滃崟鍏鋒湁寰堝己鐨勭伒媧婚」錛屽畠鍙互闅忕潃鎴戜滑鐐瑰嚮鐨勫璞′笉鍚岋紝寮瑰嚭鐨勮彍鍗曚篃浼氭湁鐩稿簲鐨勫彉鍖栥?/p>
鍥?2. Project Explorer 瑙嗗浘涓殑涓婁笅鏂囪彍鍗?/p>
鍥?3. Eclipse 鐨勪富鑿滃崟 銆銆鑿滃崟縐嶇被 銆銆姝e鍓嶉潰鎵璁插埌鐨勶紝Eclipse 鐨勮彍鍗曞寘鎷鍥捐彍鍗曪紝涓昏彍鍗曞強涓婁笅鏂囪彍鍗曚笁涓綾匯?/p>
銆銆鑿滃崟欏圭殑鎵╁睍鐐?/p>
銆銆Eclipse 鎻愪緵浜嗕袱縐嶆墿灞曠偣渚涚敤鎴鋒坊鍔犺彍鍗曢」鍒扮浉搴旂殑浣嶇疆銆傝繖涓ょ鎵╁睍鐐逛負 org.eclipse.ui.commands錛堟湰鏂囩畝縐頒負 Commands 鏂瑰紡錛夊拰 org.eclipse.ui.actionSets錛堟湰鏂囩畝縐頒負 Actions 鏂瑰紡錛夈侫ctions 鏂瑰紡涓虹晫闈笂涓嶅悓鍖哄煙鐨勮〃鐜版柟寮忔彁渚涗簡鐩稿簲鐨勬墿灞曠偣錛屽茍涓旀病鏈夊垎紱誨叾鐣岄潰琛ㄧ幇鍜屽唴鍦ㄥ疄鐜般傛伆鎭扮浉鍙嶏紝Commands 鏂瑰紡閫氳繃涓夋鏈夋晥鐨勮揪鍒扮晫闈㈣〃鐜板拰鍐呴儴瀹炵幇鐨勫垎紱伙細棣栧厛錛岄氳繃 org.eclipse.ui.commands 鎵╁睍鐐瑰垱寤哄懡浠ゅ拰綾誨埆錛圕ategory錛夛紝騫朵笖鍙互鎶婃煇浜涘懡浠ゆ斁鍦ㄤ竴涓被鍒紙Category錛変腑錛涚劧鍚庯紝閫氳繃 org.eclipse.ui.menus 鎸囧畾鍛戒護鍑虹幇鍦ㄧ晫闈㈢殑鍝釜鍖哄煙錛堣鍥捐彍鍗?/ 涓昏彍鍗?/ 涓婁笅鏂囪彍鍗曪級錛涙渶鍚庨氳繃 org.eclipse.ui.handlers 鎸囧畾鍛戒護鐨勫疄鐜般傚洜姝わ紝Eclipse 鎺ㄨ崘鏂板紑鍙戠殑鎻掍歡浣跨敤 Commands 鏉ュ垱寤烘偍鐨勭晫闈㈣彍鍗曘傚綋鐒訛紝鐢變簬 Actions 鍦ㄧ幇鏈夌殑鎻掍歡涓敤寰楁瘮杈冨錛屽鏋滄垜浠渶瑕佹墿灞曟垨鍩轟簬涔嬪墠鐨勬彃浠跺紑鍙戯紝涔熼渶瑕佸鍏惰繘琛屼簡瑙c傞櫎姝や箣澶栵紝閽堝涓婁笅鏂囪彍鍗曪紝铏界劧 Commands 鍜?Actions 鏂瑰紡鍧囧彲浠ュ垱寤轟笂涓嬫枃鑿滃崟錛屼絾鏄?Eclipse 榪樻彁渚涗簡鍙﹀涓縐嶅垱寤轟笂涓嬫枃鑿滃崟鐨勬墿灞曠偣 org.eclipse.ui.popupMenus錛堟湰鏂囩畝縐頒負 popupMenus 鏂瑰紡錛夛紝鏈枃灝嗗氨榪欎笁縐嶆墿灞曠偣鍋氳緇嗙殑浠嬬粛銆?/p>
銆銆鑿滃崟鎺у埗 銆銆鑿滃崟鎺у埗鏄竴涓潪甯稿父瑙佺殑鍔熻兘錛屼緥濡傦紝闅忕潃閫夊畾鐨勫唴瀹規垨褰撳墠紿楀彛鐨勪笉鍚岋紝鑿滃崟涓殑鑿滃崟欏逛細鏈夌浉搴旂殑鍙樺寲錛堟樉紺?/ 闅愯棌鎴栧惎鐢?/ 紱佺敤鑿滃崟欏癸級錛屽洜姝わ紝濡備綍鎺у埗鑿滃崟鏄彃浠跺紑鍙戜漢鍛樺繀欏繪帉鎻$殑鐭ヨ瘑銆侲clipse 涓鴻彍鍗曟帶鍒舵彁渚涗簡涓ょ鏂規硶錛屼竴縐嶆槸閫氳繃鎵╁睍鐐癸紱鍙︿竴縐嶆槸閫氳繃 API 鐨勬柟寮忕紪鍐欑▼搴忔帶鍒躲?/p>
銆銆Eclipse 鑿滃崟鍔熻兘鍙婂叾鎵╁睍鐐?/p>
銆銆鑷蟲錛屾垜浠 Eclipse 鑿滃崟鏈変簡鎰熻鐨勮璇嗐傜敱涓婁竴鑺傛垜浠彲鐭ワ紝瑕佹繁鍏ョ悊瑙?Eclipse 鑿滃崟鍔熻兘錛屾垜浠渶瑕佷粠涓変釜鏂歸潰鍘繪帉鎻★細鑿滃崟縐嶇被錛岃彍鍗曠殑鎵╁睍鐐瑰拰鑿滃崟鎺у埗銆備笅闈㈠皢榪涜璇︾粏璁茶堪銆?/p>
銆銆鑿滃崟縐嶇被 銆銆閽堝鍚勭鑿滃崟錛孍clipse 鎻愪緵浜嗙浉搴旂殑鎵╁睍鐐癸紝鍥犳錛屽紑鍙戜漢鍛樺彲浠ラ氳繃榪欎簺鎵╁睍鐐規妸鑿滃崟鏀懼埌鐣岄潰鐨勪笉鍚屽尯鍩燂紝璇︾粏鍐呭璇峰弬鑰?2.2 灝忚妭銆?/p>
銆銆鑿滃崟鐨勬墿灞曠偣 銆銆瑙嗗浘鑿滃崟鐨勬墿灞曠偣 銆銆閲囩敤 Commands 鏂瑰紡鍒涘緩瑙嗗浘鑿滃崟錛岄渶瑕佸紩鍏?org.eclipse.ui.menus 鎵╁睍鐐癸紱鑰?Actions 鏂瑰紡闇瑕佸紩鍏?org.eclipse.ui.actionSets. 銆銆1銆佽鍥捐彍鍗曪紙Commands 鏂瑰紡錛夛細 銆銆MenuContribution locationURI = “[Scheme]:[id]?[argument-list]” 銆銆鍏朵腑錛孲cheme 涓鴻鑿滃崟欏瑰嚭鐜扮殑鍖哄煙錛宮enu 涓鴻鍥劇殑涓嬫媺鑿滃崟錛宼oolbar 涓鴻鍥劇殑宸ュ叿鏍忚彍鍗曪紱id 涓鴻彍鍗曞尯鍩?ID錛沘rgument-list 涓鴻鑿滃崟欏瑰嚭鐜板湪鎸囧畾鑿滃崟鐨勪綅緗?/p>
銆銆渚嬪錛氬湪 ProbelmView 鐨勪笅鎷夎彍鍗曞姞涓涓彍鍗曢」錛屽叾 MenuContribution 鐨?locationURI 搴斾負錛歮enu:org.eclipse.ui.views.ProblemView?after=additions錛涘湪 ProblemView 鐨勫伐鍏鋒爮鑿滃崟涓姞鍏ヤ竴涓彍鍗曢」錛屽叾 locationURI 搴斾負錛歵oolbar:org.eclipse.ui.views.ProblemView?after=additions銆?/p>
銆銆2銆佽鍥捐彍鍗曪紙Actions 鏂瑰紡錛夛細 銆銆閲囩敤 Actions 鏂瑰紡鍒涘緩鑿滃崟錛岄渶瑕佸紩鍏?org.eclipse.ui.actionSets 鎵╁睍鐐癸紝騫墮氳繃璁懼畾 action 鐨?menubarPath 鎸囧畾涓嬫媺鑿滃崟 / 鑿滃崟欏瑰嚭鐜扮殑浣嶇疆錛涢氳繃璁懼畾 action 鐨?toolbarPath 璁懼畾宸ュ叿鏍忚彍鍗?/ 鑿滃崟欏瑰嚭鐜扮殑浣嶇疆銆?/p>
銆銆渚嬪錛屾坊鍔犱竴涓笅鎷夎彍鍗曢」鍒?Problems 瑙嗗浘涓紝鍏?menubarPath 搴斾負錛?/p>
銆銆org.eclipse.ui.views.ProblemView/additions 銆銆涓昏彍鍗曠殑鎵╁睍鐐?/p>
銆銆1銆佷富鑿滃崟錛圕ommands 鏂瑰紡錛?/p>
銆銆閫氳繃 Commands 鏂瑰紡鎶婅彍鍗曢」娣誨姞鍒頒富鑿滃崟鍙婂叾宸ュ叿鏍忎笂錛屽拰瑙嗗浘鑿滃崟涓鏍鳳紝涔熸槸閫氳繃鎵╁睍鐐?org.eclipse.ui.menus 瀹炵幇錛岄渶瑕佽瀹氬叾 menuContribution 鐨?locationURI銆?/p>
銆銆渚嬪錛屾坊鍔犱竴涓彍鍗曪紙鑿滃崟鍙互鍖呭惈鑻ュ共涓彍鍗曢」錛夊埌涓昏彍鍗曚竴鏍忎腑錛屽叾 locationURI 涓猴細 銆銆menu:org.eclipse.ui.main.menu?after=additions 銆銆娣誨姞涓涓彍鍗曞埌宸ュ叿鏍忎箣涓紝鍏?locationURI 涓猴細 銆銆toolbar:org.eclipse.ui.main.toolbar?after=additions 銆銆褰撶劧錛屾垜浠篃鍙互鎶婅彍鍗曢」娣誨姞鍒板凡緇忓瓨鍦ㄧ殑鑿滃崟褰撲腑錛屼緥濡傛坊鍔犱竴涓彍鍗曢」鍒?Eclipse 鐨?Search 涓昏彍鍗曞綋涓紝鍏?locationURI 涓猴細 銆銆menu:org.eclipse.search.menu?dialogGroup 銆銆2銆佷富鑿滃崟錛圓ctions 鏂瑰紡錛?/p>
銆銆閫氳繃 Actions 鏂瑰紡鎶婅彍鍗曢」娣誨姞鍒頒富鑿滃崟鍙婂叾宸ュ叿鏍忎笂錛屽拰瑙嗗浘鑿滃崟涓鏍鳳紝涔熸槸閫氳繃鎵╁睍鐐?org.eclipse.ui.actionSets 瀹炵幇錛岄渶瑕佽瀹?action 鐨?menubarPath 鍜?toolbarPath 瀹炵幇銆?/p>
銆銆渚嬪錛屾坊鍔犱竴涓彍鍗曢」鍒?Eclipse 鐨?Search 涓昏彍鍗曚腑錛屽叾 menubarPath 搴斾負錛?/p>
銆銆org.eclipse.search.menu/dialogGroup 銆銆娉ㄦ剰錛氬鏋滈噰鐢ㄤ笂榪版柟寮忔坊鍔犱竴涓彍鍗曢」鍒?Search 涓昏彍鍗曪紝褰撴垜浠繍琛屾椂騫舵病鏈夊嚭鐜版坊鍔犵殑鑿滃崟欏癸紝榪欐椂鍊欓渶瑕佹崲涓涓?workspace錛屽叾鍘熷洜鏄?Eclipse 緙撳瓨浜嗕笌鍏剁浉鍏崇殑鏌愪簺淇℃伅鍦?workspace 褰撲腑銆?/p>
銆銆涓婁笅鏂囪彍鍗曠殑鎵╁睍鐐?/p>
銆銆涓婁笅鏂囪彍鍗曢櫎浜嗛氳繃 Commands 鍜?Actions 鏂瑰紡娣誨姞錛岃繕鍙互浣跨敤鎵╁睍鐐?org.eclipse.ui.popupMenus 鏂瑰紡娣誨姞錛屼笅闈㈠垎鍒繘琛屼粙緇嶃?/p>
銆銆1銆佷笂涓嬫枃鑿滃崟錛圕ommands 鏂瑰紡錛?/p>
銆銆Commands 鏂瑰紡涓庢坊鍔犺鍥捐彍鍗曞拰涓昏彍鍗曠殑鏂瑰紡涓鏍鳳紝閫氳繃璁懼畾鍏?menuContribution 鐨?locationURI 鏉ュ疄鐜般?/p>
銆銆渚嬪錛屾坊鍔犱竴涓笂涓嬫枃鑿滃崟鍒?Problems 瑙嗗浘涓紝鍏?locationURI 涓猴細 銆銆popup:org.eclipse.ui.views.ProblemView?after=additions銆?/p>
銆銆濡傛灉鎴戜滑鎯寵鏌愪釜涓婁笅鏂囪彍鍗曢」鍑虹幇鍦ㄤ換浣曞尯鍩燂紝鍒欏彲浠ヤ嬌鐢ㄤ笅闈㈢殑 locationURI錛?/p>
銆銆popup:org.eclipse.ui.popup.any?after=additions 銆銆2銆佷笂涓嬫枃鑿滃崟錛圓ctions 鏂瑰紡錛?/p>
銆銆Actions 鏂瑰紡娌℃湁鐩存帴鎻愪緵鎵╁睍鐐規坊鍔犱笂涓嬫枃鑿滃崟錛屼絾鏄垜浠彲浠ラ氳繃緙栫▼鐨勬柟寮忓疄鐜幫紝濡備笅浠g爜娓呭崟 1 涓?TreeViewer 娣誨姞涓婁笅鏂囪彍鍗曪紝閫氳繃 IMenuManager 鐨?add 鏂規硶娣誨姞 actions銆?/p>
娓呭崟 1. 閫氳繃 Actions 鏂瑰紡緙栫▼瀹炵幇娣誨姞涓婁笅鏂囪彍鍗?/p>
銆private銆void銆hookContextMenu()銆{銆 銆銆3銆佷笂涓嬫枃鑿滃崟錛坧opupMenus 鏂瑰紡錛?/p>
銆銆閫氳繃 popupMenus 鎵╁睍鐐瑰疄鐜頒笂涓嬫枃鑿滃崟錛岄渶瑕佽瀹?objectContribution 鐨?objectClass 灞炴ф妸涓婁笅鏂囪彍鍗曟坊鍔犲埌鐩稿簲鐨勫尯鍩熴?/p>
銆銆渚嬪錛屽鏋滄垜浠兂褰撶敤鎴風偣鍑?Eclipse 涓殑璧勬簮鏃訛紝寮瑰嚭鐨勪笂涓嬫枃鑿滃崟鍖呮嫭鏌愪釜鑿滃崟欏癸紝鎴戜滑鍙互璁懼畾 objectClass 灞炴т負錛?/p>
銆銆org.eclipse.core.resources.IResource 銆銆閫氳繃 Commands 鏂瑰紡鍒涘緩鑿滃崟欏?/p>
銆銆閫氳繃 Commands 鏂瑰紡鍒涘緩鑿滃崟欏癸紝棣栧厛闇瑕佸垱寤?Command錛岄氳繃鎵╁睍鐐?org.eclipse.ui.commands錛岀劧鍚庢垜浠彲浠ユ妸榪欎釜 Command 鏀懼埌浠諱綍鍖哄煙錛屼笂涓灝忚妭宸茬粡璁插埌錛岄氳繃 org.eclipse.ui.menus 鎵╁睍鐐圭‘瀹氳彍鍗曞垱寤虹殑鍖哄煙錛屾渶鍚庨氳繃鎵╁睍鐐?org.eclipse.ui.handlers 瀹氫箟榪欎釜 command 鐨勫叿浣撹涓恒?/p>
銆銆鍦ㄥ垱寤?Command 鏃訛紝鎴戜滑鍙互鍏堝垱寤轟竴涓?Category錛屽茍鎶婄浉鍏崇殑涓浜涘懡浠ゆ斁鍒拌繖涓?Category 涓紝榪欐牱鏈夊埄浜庣鐞嗐備唬鐮佹竻鍗?2 鍒涘緩涓涓?Command(“Show in Glossary Explorer”)錛屽茍鏀懼埌涓涓?Category 涓紝鐒跺悗鎶婅 Command 鏀懼埌 BGSearchResultView 瑙嗗浘鐨勪笂涓嬫枃鑿滃崟涓紝鏈鍚庨氳繃鎵╁睍 org.eclipse.ui.handlers 瀹氫箟璇?Command 鐨勫疄鐜扮被銆?/p>
娓呭崟 2. 閫氳繃 Commands 鏂瑰紡娣誨姞鑿滃崟欏?/p>
銆<!--銆娣誨姞銆command銆-->銆 銆銆閫氳繃 Actions 鏂瑰紡鍒涘緩鑿滃崟欏?/p>
銆銆姝e鍓嶉潰璁插埌錛孉ctions 鏂瑰紡娌℃湁鍒嗙鐣岄潰鐨勮〃鐜板拰鍐呴儴瀹炵幇錛屽洜姝わ紝鎵鏈夎繖浜涘潎閫氳繃 action 鏉ュ畬鎴愩傚涓嬩唬鐮佹竻鍗?3 涓烘坊鍔犱竴涓?Search 鑿滃崟欏瑰埌 Eclipse 鐨?Search 涓昏彍鍗曪紙閫氳繃 action 鐨?menubarPath 鎸囧畾錛変腑錛屽叾涓?class 瀵瑰簲鐨勫間負璇?Action 鐨勫疄鐜扮被錛岃綾婚渶瑕佸疄鐜版帴鍙?IWorkbenchWindowActionDelegate銆?/p>
娓呭崟 3. 閫氳繃 Actions 鏂瑰紡娣誨姞鑿滃崟欏?/p>
銆<extension銆 銆銆閫氳繃 popupMenus 鏂瑰紡鍒涘緩鑿滃崟欏?/p>
銆銆popupMenus 鏂瑰紡鍒涘緩涓婁笅鏂囪彍鍗曢」涔熸槸閫氳繃 action 鏉ュ疄鐜幫紝涓嬮潰渚嬪瓙涓烘坊鍔犱竴涓彍鍗曢」鍒扮敤鎴峰彸鍑?IGraphicalEditPart 瀵硅薄鏃跺脊鍑虹殑涓婁笅鏂囪彍鍗曪紝閫氳繃 menubarPath 鎸囧畾璇?Action 鍑虹幇鐨勫尯鍩燂紝閫氳繃 class 鎸囧畾璇?action 鐨勫疄鐜扮被錛岃綾婚渶瑕佸疄鐜版帴鍙?IObjectActionDelegate銆?/p>
娓呭崟 4. 閫氳繃 popupMenus 鏂瑰紡娣誨姞鑿滃崟欏?/p>
銆<extension銆 銆銆鑿滃崟鎺у埗 銆銆瑙嗗浘鑿滃崟鐨勬帶鍒朵富瑕佸寘鎷惎鐢?/ 紱佺敤錛屾樉紺?/ 闅愯棌鑿滃崟銆?/p>
銆銆閫氳繃 Command 鏂瑰紡鍒涘緩鐨勮彍鍗曪紝鍙互閫氳繃 org.eclipse.ui.commands 鐨?visibleWhen 灞炴ф帶鍒惰彍鍗曠殑闅愯棌鍜屾樉紺猴紝閫氳繃 org.eclipse.ui.handlers 鐨?activewhen 鎴?enabledWhen 鎺у埗鑿滃崟鐨勫惎鐢ㄦ垨紱佺敤銆?/p>
銆銆閫氳繃 Actions 鏂瑰紡鍒涘緩鐨勮彍鍗曪紝鍙互閫氳繃 action 鐨?enablement 灞炴ф帶鍒惰彍鍗曠殑鍚敤 / 紱佺敤銆?/p>
銆銆閫氳繃 popupMenus 鏂瑰紡鍒涘緩鐨勮彍鍗曪紝鍙互閫氳繃 objectContribution 鐨?visibility 鍜?enablement 鏉ヨ緗 objectContribution 涓嬬殑 action 鐨勬樉紺?/ 闅愯棌鍜屽惎鐢?/ 紱佺敤錛屾垜浠篃鍙互璁劇疆 action 鐨?enablement 鏉ユ帶鍒惰鑿滃崟鐨勫惎鐢?/ 紱佺敤銆?/p>
銆銆榪欓噷涓嶈緇嗚榪?enablement錛寁isibleWhen 鍜?enabledWhen 鐨勫弬鏁板強濡備綍璁劇疆錛岃鑰呭彲浠ュ弬鑰冪涓夎妭鐨勪緥瀛愬拰鏈枃鐨勫弬鑰冩枃鐚?/p>
銆銆緙栫▼瀹炶返 銆銆鏈枃灝嗙粨鍚堝墠涓よ妭璁插埌鐨勭煡璇嗭紝浠ヤ緥瀛愮殑褰㈠紡璇存槑濡備綍鍒涘緩騫朵笖鎺у埗鑿滃崟銆傞鍏堝垱寤轟竴涓鍥撅紙Menu Example錛夛紝鐒跺悗鍒嗗埆閫氳繃 Commands錛孉ctions 鍜?popupMenus 鏂瑰紡鍒涘緩鑻ュ共涓彍鍗曪紝騫舵坊鍔犵浉搴旂殑鑿滃崟鎺у埗鐐廣?/p>
銆銆鍒涘緩 Menu Example 瑙嗗浘 銆銆鎵╁睍 org.eclipse.views 鍒涘緩“Menu Example”瑙嗗浘錛屽涓嬩唬鐮佹竻鍗?5 涓哄垱寤鴻鍥劇殑 xml 浠g爜銆?/p>
娓呭崟 5. 鎵╁睍 org.eclipse.ui.views 鍒涘緩瑙嗗浘 銆<extension銆 銆銆鍒涘緩 Commands 銆銆閲囩敤 Command 鏂瑰紡鍒涘緩“Menu Example”涓昏彍鍗曪紙鍖呭惈 AngryCommand 鍜?JokeCommand 涓や釜鑿滃崟欏癸級錛屽茍涓斿熀浜庤繖涓や釜鑿滃崟欏瑰垱寤轟簡 Menu Example 瑙嗗浘鐨勪笅鎷夎彍鍗曞拰宸ュ叿鏍忚彍鍗曪紝鍙婂叾 TreeViewer 鐨勪笂涓嬫枃鑿滃崟銆?/p>
銆銆濡備笅浠g爜娓呭崟 6 涓烘墿灞?org.eclipse.ui.commands 鍒涘緩 Menu Example 鍛戒護鍜岀被鍒紝騫朵笖鍖呭惈涓や釜鍛戒護錛欽oke Command 鍜?Angry Command銆?/p>
娓呭崟 6. 鎵╁睍 org.eclipse.ui.commands 鍒涘緩鍛戒護 銆<extension銆 銆銆鍏寵仈 Commands 鍒頒富鑿滃崟 銆銆濡備笅浠g爜娓呭崟 7 涓烘墿灞?org.eclipse.ui.menus錛屽茍鍩轟簬鍓嶉潰鍒涘緩鐨?Comands錛屾坊鍔犱竴涓富鑿滃崟 Menu Example錛屽茍涓斿寘鍚?Joke Command 鍜?Angry Command 鑿滃崟欏廣?/p>
娓呭崟 7. 鍒涘緩 Menu Example 涓昏彍鍗?/p>
銆<menuContribution銆 銆銆Commands 鐨勫疄鐜扮被 銆銆濡備笅浠g爜娓呭崟 9 鎵紺烘墿灞?org.eclipse.ui.handlers 涓?Joke Command 鍜?Angry Command 鍒涘緩浜嬩歡澶勭悊綾伙紝鍏朵腑 Joke Command 閫氳繃 enabledWhen 灞炴ф帶鍒惰鑿滃崟欏規槸鍚﹀惎鐢紝褰撴垜浠悓鏃墮夋嫨浜嗕袱涓璞℃椂 Joke Command 澶勪簬鍚敤鐘舵侊紝鍚﹀垯涓虹鐢ㄣ?/p>
娓呭崟 9. 鎵╁睍 org.eclipse.ui.handlers 涓?Commands 鍒涘緩瀹炵幇綾?/p>
銆<extension銆 銆銆鍒涘緩 Action 騫跺叧鑱斿埌 Eclipse 鐨?Search 涓昏彍鍗?/p>
銆銆閲囩敤 Actions 鏂瑰紡鍦?Eclipse 鐨勪富鑿滃崟 Search 涓坊鍔犲垱寤鴻彍鍗曢」 SmileAction銆傛墿灞?org.eclipse.ui.actionSets 鍦?Eclipse 鐨勪富鑿滃崟 Search 涓坊鍔犱竴涓彍鍗曢」 Smile Action銆傚涓嬩唬鐮佹竻鍗?10 鎵紺哄垱寤鴻 action 騫舵坊鍔犲埌 search 涓昏彍鍗曪紝鍙湁褰撴垜浠夋嫨鑷沖皯涓涓璞℃椂錛堣緗?enablesFor 灞炴т負“+”錛夛紝璇ヨ彍鍗曢」鎵嶅浜庡惎鐢ㄧ姸鎬併?/p>
娓呭崟 10. 閫氳繃 Actions 鏂瑰紡鍒涘緩鑿滃崟欏?/p>
銆<extension銆 銆銆pupupMenus 鏂瑰紡鍒涘緩 Action 騫跺叧鑱斿埌 IResource 璧勬簮鐨勪笂涓嬫枃鑿滃崟 銆銆鎵╁睍 org.eclipse.ui.popupMenus 鍒涘緩鑿滃崟“Menu Example”錛岃鑿滃崟鍖呭惈涓涓彍鍗曢」 HelloAction銆傚綋鎴戜滑鍦?Eclipse 浠諱綍鍖哄煙鍙沖嚮 org.eclipse.core.resources.IResource 璧勬簮鏃跺脊鍑虹殑涓婁笅鏂囪彍鍗曚腑浼氬嚭鐜?#8220;Menu Example”鑿滃崟銆傚涓嬩唬鐮佹竻鍗?11 涓哄垱寤鴻涓婁笅鏂囪彍鍗曠殑 xml 浠g爜銆?/p>
娓呭崟 11. popupMenus 鏂瑰紡鍒涘緩涓婁笅鏂囪彍鍗?/p>
銆<extension銆 銆銆pupupMenus 鏂瑰紡鍒涘緩 Action 騫跺叧鑱斿埌 IResource 璧勬簮鐨勪笂涓嬫枃鑿滃崟 銆銆鎵╁睍 org.eclipse.ui.popupMenus 鍒涘緩鑿滃崟欏?GreetAction 鍜?CryAction錛屽綋鎴戜滑鍙沖嚮 Menu Example 瑙嗗浘涓殑 TreeViewer 鑺傜偣鏃跺脊鍑恒傚涓嬩唬鐮佹竻鍗?12 鎵紺烘墿灞?org.eclipse.ui.popupMenus 涓?Menu Example 瑙嗗浘鍒涘緩 GreetAction 鍜?CryAction 涓婁笅鏂囪彍鍗曢」銆備嬌鐢?visiblity 鐨?objectState 灞炴ф帶鍒惰彍鍗曢」鐨勫彲瑙佺姸鎬侊紝浣跨敤璇ュ睘鎬ц姹傚叾閫夋嫨鐨勫璞″疄鐜頒簡 org.eclipse.ui.IActionFilter 鎺ュ彛錛屽叿浣撳彲鍙傝 Person 綾葷殑瀹炵幇銆?/p>
娓呭崟 12. 鎵╁睍 org.eclipse.ui.popupMenus 鍒涘緩鑿滃崟 銆<extension銆 銆銆Menu Example 瑙嗗浘鐨勪唬鐮佸疄鐜扮被 銆銆濡備笅浠g爜娓呭崟 13 鎵紺轟負 Menu Example 瑙嗗浘鐨勪唬鐮侊紝璇ヨ鍥句腑鏈変竴涓?TreeViewer錛屽茍閫氳繃鍑芥暟 hookContextMenu 鎶婁笂涓嬫枃鑿滃崟鍏寵仈鍒?TreeViewer銆傚叾涓嚱鏁?viewMenuAction 鐢ㄤ簬鏇存柊鑿滃崟鐨勭姸鎬侊紝瀹冮鍏堣幏鍙栬鍥捐彍鍗曪紝鐒跺悗璋冪敤 IMenuManager 鐨?update 鏂規硶鏇存柊瀵瑰簲鑿滃崟欏圭殑鐘舵侊紝浠庤岃揪鍒版帶鍒惰彍鍗曠殑鐩殑銆?/p>
娓呭崟 13. Menu Example 瑙嗗浘浠g爜 銆public銆class銆MenuExplorer銆extends銆ViewPart銆{銆 銆銆Person 綾葷殑瀹炵幇 銆銆濡備笅浠g爜娓呭崟 14 涓?Person 綾葷殑瀹炵幇錛岀敤浜庤〃紺?MenuExample 瑙嗗浘涓?TreeViewer 鐨勪竴涓妭鐐癸紝瀹冨疄鐜頒簡 IActionFilter 鎺ュ彛錛岄氳繃 testAttribute 鏉ョ‘瀹氭槸鍚︽樉紺?/ 闅愯棌鑿滃崟錛堝叾涓?target 琛ㄧず鐢ㄦ埛閫夋嫨鐨勫璞★紝name/value 瀵瑰簲浜?plugin.xml 鏂囦歡涓?objectState 鐨?name/value錛? 娓呭崟 14. Person 綾誨疄鐜?/p>
銆public銆class銆Person銆implements銆IActionFilter銆{銆 銆銆鎬葷粨 銆銆鑷蟲涓烘錛屽凡緇忔妸 Eclipse 鑿滃崟鍔熻兘鍙婂叾鎵╁睍鐐規秹鍙婂埌鐨勭被 / 鎺ュ彛 /API 榪涜浜嗚緇嗙殑璇存槑錛岀浉淇¤鑰呭凡緇忔湁娓呮櫚鐨勮璇嗕簡銆傚浜庡墠闈㈡彁鍒?popupMenus 鏂瑰紡鍒涘緩涓婁笅鏂囪彍鍗曪紝瑕佹眰閫夋嫨鐨勫璞″疄鐜?IActionFilter 鎺ュ彛錛屼絾鏄紝濡傛灉寮鍙戜漢鍛樻鍦ㄤ嬌鐢?gmf 榪涜寮鍙戯紝閭d箞鎴戜滑鍙互涓嶅繀瑕佹眰閫夋嫨鐨勫璞″疄鐜?IActionFilter錛屾垜浠彲浠ラ氳繃鎵╁睍 org.eclipse.gmf.runtime.common.ui.services.action.actionFilterProviders 瀵硅彍鍗曢」榪涜鎺у埗錛屽涓嬩唬鐮佹竻鍗?15 涓烘墿灞曡 extension point 鐨?xml 浠g爜錛屾垜浠彲浠ュ畾涔夊涓睘鎬э紙<Attribute> … </Attribute錛夛紝鍏朵腑 Attribute 鐨?name 鍜?value 瀵瑰簲浜?visibility 鐨?objectState 涓殑 name 鍜?value銆?/p>
娓呭崟 15. 閫氳繃 actionFilterProviders 鎵╁睍鐐瑰疄鐜板鑿滃崟鐨勬帶鍒?/p>
銆<extension銆 銆銆濡備笅浠g爜娓呭崟 16 鎵紺?PopupActionFilterProvider 鐨勫疄鐜幫紝瀹冪戶鎵?AbstractActionFilterProvider錛屽彧闇瑕佸疄鐜板叾涓殑 testAttribute 鍜?provides 鏂規硶錛屽綋 testAttribute 榪斿洖 true 鏃訛紝閭d箞璇ヨ彍鍗曢」琚惎鐢紝鍚﹀垯紱佺敤銆傚叾涓?target 瀵瑰簲浜庢垜浠夋嫨鐨勫璞★紝name 鍜?value 鍙傛暟瀵瑰簲浜?visiblity 涓?objectState 鐨?name 鍜?value 鐨勬寚瀹氬?( 涓庡墠闈㈡彁鍒扮殑 Person 綾諱腑鐨?testAttribute 鏂規硶綾諱技 )銆?/p>
銆public銆class銆PopupActionFilterProvider銆extends銆AbstractActionFilterProvider銆{銆
org.eclipse.ui.contexts
鎵╁睍鐐筼rg.eclipse.ui.bindings鏄粰command澧炲姞蹇嵎閿紝緇撳悎錛堜粙緇嶄簩錛夛紝緇欏懡浠om.xxxx.test.command1澧炲姞蹇嵎閿紝
紺轟緥浠g爜濡備笅錛?br />
<extension
point="org.eclipse.ui.bindings">
<key
commandId="com.xxxx.test.command1"
contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M2+F7">
</key>
</extension>
榪欐牱蹇嵎閿甋hift+F7鍦‥clipse宸ヤ綔鍙頒笂閮戒細璧蜂綔鐢紝浣嗘槸濡傛灉鎯寵鍛戒護鐨勫揩鎹烽敭鍙鐗瑰畾鐨勮鍥炬垨鑰呯紪杈戝櫒璧蜂綔鐢紝閭d箞鍙互閫氳繃org.eclipse.ui.contexts鎵╁睍鐐規潵鑷畾涔変笂涓嬫枃銆?br />
<extension
point="org.eclipse.ui.contexts">
<context
id="viewmenu.testcontext"
name="ViewContext"
parentId="org.eclipse.ui.contexts.window">
</context>
</extension>
鎵╁睍涔嬪悗錛岄渶瑕佷慨鏀筼rg.eclipse.ui.bindings鎵╁睍涓殑contextId灞炴т負viewmenu.testcontext銆?/span>
鍙﹀榪橀渶瑕佸湪闇瑕佸鍔犺蹇嵎閿殑緙栬緫鍣ㄦ垨鑰呰鍥懼搴旂被涓鍔犲涓嬩唬鐮侊紙瑙嗗浘綾誨湪浠g爜鐨刢reateControl鏂規硶錛岀紪杈戝櫒綾誨湪浠g爜鐨刬nit鏂規硶錛夛細
IContextService contextService =
(IContextService) getSite().getService(IContextService.class);
contextService.activateContext("viewmenu.testcontext");
]]>
銆銆濡傚浘 3 鎵紺轟負 Eclipse 鐨勪富鑿滃崟錛屽寘鎷渶涓婇潰鐨勪富鑿滃崟欏癸紙涓嶅彲縐誨姩錛夊強鍏朵笅闈㈢殑宸ュ叿鏍忚彍鍗曪紙鍙互縐誨姩錛屽茍涓?Eclipse 鎻愪緵浜嗘樉紺?/ 涓嶆樉紺鴻繖浜涜彍鍗曠殑鍔熻兘錛夛紝Eclipse 騫朵笉寤鴻鎴戜滑涓烘瘡涓涓彃浠墮兘娣誨姞鏂扮殑涓昏彍鍗曪紝榪欐牱瀹規槗閫犳垚鍐椾綑錛岃屼笖涓嶆柟渚跨敤鎴鋒搷浣溿傞氬父錛屾垜浠彲浠ユ妸鑿滃崟欏規坊鍔犲埌 Eclipse 宸叉湁鐨勮彍鍗曪紝濡傛彃浠剁殑鏌ユ壘鍔熻兘鍙互娣誨姞涓涓煡鎵捐彍鍗曢」鍒?Eclipse 鐨?Search 涓昏彍鍗曚笂銆?/p>
銆銆鍓嶉潰璁插埌 Eclipse 鐨勫悇縐嶈彍鍗曪紝閭d箞錛屽浣曞湪寮鍙戞彃浠舵垨 RCP 搴旂敤紼嬪簭鐨勬椂鍊欐坊鍔犺繖浜涜彍鍗曪紵鏈枃涓嬮潰鐨勭瘒騫呭皢璇︾粏浠嬬粛濡備綍鎵╁睍 Eclipse 鐨勮彍鍗曞姛鑳斤紝浣胯鑰呮繁鍏ヤ簡瑙?Eclipse 鐨勮彍鍗曞姛鑳斤紝騫惰兘澶熷紑鍙戝叿鏈夎繖浜涜彍鍗曠殑搴旂敤紼嬪簭銆傚洜姝わ紝蹇呴』鎺屾彙涓夋柟闈㈢殑鍐呭錛氳彍鍗曠綾伙紝鑿滃崟鐨勬墿灞曠偣錛岃彍鍗曟帶鍒訛紙鏄劇ず / 闅愯棌鎴栧惎鐢?/ 紱佺敤鑿滃崟欏癸級銆備笅闈粠姒傚康涓婁粙緇嶈繖涓夋柟闈㈠唴瀹癸紝涓嬩竴灝忚妭灝嗕細榪涜璇︾粏浠嬬粛銆?/p>
銆銆IMenuManager銆fMenuMgr銆=銆new銆MenuManager(“#PopupMenu”);銆
銆銆fMenuMgr.setRemoveAllWhenShown(true);銆
銆銆//銆娣誨姞銆Actions銆
銆銆fMenuMgr.add(action銆…銆)銆
銆銆fMenuMgr.createContextMenu(treeViewer.getControl());銆
銆銆treeViewer.getControl().setMenu(fMenu);銆
銆銆getSite().registerContextMenu(fMenuMgr,銆treeViewer);銆
銆}銆
銆<extension銆
銆銆銆point="org.eclipse.ui.commands">銆
銆銆<category銆
銆銆銆description="Business銆Glossary"銆
銆銆銆id="com.ibm.bg.ui.commands.category"銆
銆銆銆name="%category.BusinessGlossary.name">銆
銆銆</category>銆
銆銆<command銆
銆銆銆categoryId="com.ibm.bg.ui.commands.category"銆
銆銆銆description="Show銆in銆Glossary銆Explorer"銆
銆銆銆id="com.ibm.bg.ui.commands.BGShowInBrowser"銆
銆銆銆name="%command.ShowInGE.name">銆
銆銆</command>銆
銆</extension>銆
銆<!--銆鎶娿Command銆鏀懼埌鐣岄潰鐨勫搴斿尯鍩熴-->銆
銆<extension銆
銆銆銆銆point="org.eclipse.ui.menus">銆
銆銆<menuContribution銆locationURI=銆
銆銆"popup:com.ibm.bg.internal.ui.search.BGSearchResultView?after=additions">銆
銆銆銆<command銆
銆銆銆銆銆銆commandId="com.ibm.bg.ui.commands.BGShowInBrowser"銆
銆銆銆銆銆銆style="push"銆
銆銆銆銆銆銆tooltip="%command.ShowInGE.tooltip">銆
銆銆銆</command>銆
銆銆</menuContribution>銆
銆</extension>銆
銆<!--銆瀹氫箟銆command銆鐨勫疄鐜扮被銆-->銆
銆<extension銆
銆銆銆point="org.eclipse.ui.handlers">銆
銆銆<handler銆
銆銆銆銆銆class="com.ibm.bg.internal.ui.handlers.BGShowInBrowser"銆
銆銆銆銆銆commandId="com.ibm.bg.ui.commands.BGShowInBrowser">銆
銆銆</handler>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.actionSets">銆
銆銆<actionSet銆
銆銆銆銆銆id="com.ibm.bg.ui.workbenchActionSet"銆
銆銆銆銆銆label="%category.name.0"銆
銆銆銆銆銆visible="true">銆
銆銆銆<action銆
銆銆銆銆銆銆class="com.ibm.bg.internal.ui.handlers.BGSearchHandler"銆
銆銆銆銆銆銆definitionId="com.ibm.bg.ui.commands.BGSearch"銆
銆銆銆銆銆銆icon="icons/search.png"銆
銆銆銆銆銆銆id="com.ibm.bg.ui.commands.BGSearch"銆
銆銆銆銆銆銆label="%action.searchGlossayInMainMenu.label"銆
銆銆銆銆銆銆menubarPath="org.eclipse.search.menu/dialogGroup"銆
銆銆銆銆銆銆style="push">銆
銆銆銆</action>銆
銆銆</actionSet>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.popupMenus">銆
銆銆<objectContribution銆
銆銆銆銆銆adaptable="false"銆
銆銆銆銆銆id="com.ibm.bg.uml.objectContributions.BGAssignToGlossary"銆
銆銆銆銆銆objectClass="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">銆
銆銆銆<action銆
銆銆銆銆銆銆class="com.ibm.bg.internal.uml.actions.BGAssignToGlossary"銆
銆銆銆銆銆銆enablesFor="+"銆
銆銆銆銆銆銆icon="icons/assign.png"銆
銆銆銆銆銆銆id="com.ibm.bg.internal.uml.actions.BGAssignToGlossary"銆
銆銆銆銆銆銆label="%BGAssignToGlossary.item"銆
銆銆銆銆銆銆menubarPath="com.ibm.bg.uml.popupMenuGroup">銆
銆銆銆</action>銆
銆銆</objectContribution>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.views">銆
銆銆<category銆
銆銆銆銆銆id="com.free.menu.category"銆
銆銆銆銆銆name="Menu銆Example銆View">銆
銆銆</category>銆
銆銆<view銆
銆銆銆銆銆category="com.free.menu.category"銆
銆銆銆銆銆class="com.free.menu.view.MenuExplorer"銆
銆銆銆銆銆id="com.free.menu.view.MenuExplorer"銆
銆銆銆銆銆name="Menu銆Explorer"銆
銆銆銆銆銆restorable="true">銆
銆銆</view>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.commands">銆
銆銆<category銆
銆銆銆銆銆id="com.free.menu.category"銆
銆銆銆銆銆name="Menu銆Example">銆
銆銆</category>銆
銆銆<command銆
銆銆銆銆銆categoryId="com.free.menu.category"銆
銆銆銆銆銆id="com.free.menu.commands.jokeCommand"銆
銆銆銆銆銆name="Joke銆Command">銆
銆銆</command>銆
銆銆<command銆
銆銆銆銆銆categoryId="com.free.menu.category"銆
銆銆銆銆銆id="com.free.menu.commands.angryCommand"銆
銆銆銆銆銆name="Angry銆Command">銆
銆銆</command>銆
銆</extension>銆
銆銆銆locationURI="menu:org.eclipse.ui.main.menu?after=additions">銆
銆銆<menu銆
銆銆銆id="com.free.menu.MenuExample"銆
銆銆銆銆銆label="Menu銆Example">銆
銆銆銆<command銆
銆銆銆銆銆銆commandId="com.free.menu.commands.jokeCommand"銆
銆銆銆銆銆銆style="push">銆
銆銆銆</command>銆
銆銆銆<command銆
銆銆銆銆銆銆commandId="com.free.menu.commands.angryCommand"銆
銆銆銆銆銆銆style="push">銆
銆銆銆</command>銆
銆銆</menu>銆
銆</menuContribution>銆
銆銆銆point="org.eclipse.ui.handlers">銆
銆銆<handler銆
銆銆銆銆銆class="com.free.menu.actions.JokeCommand"銆
銆銆銆銆銆commandId="com.free.menu.commands.jokeCommand">銆
銆銆銆<enabledWhen>銆
銆銆銆銆銆<count銆
銆銆銆銆銆銆銆銆value="2">銆
銆銆銆銆銆</count>銆
銆銆銆</enabledWhen>銆
銆銆</handler>銆
銆銆<handler銆
銆銆銆銆銆class="com.free.menu.actions.AngryCommand"銆
銆銆銆銆銆commandId="com.free.menu.commands.angryCommand">銆
銆銆</handler>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.actionSets">銆
銆銆<actionSet銆
銆銆銆銆銆id="com.free.menu.actionSet.MenuExample"銆
銆銆銆銆銆label="Menu銆Example"銆
銆銆銆銆銆visible="true">銆
銆銆銆<action銆
銆銆銆銆銆銆class="com.free.menu.actions.SmileAction"銆
銆銆銆銆銆銆enablesFor="+"銆
銆銆銆銆銆銆icon="icons/searchres.gif"銆
銆銆銆銆銆銆id="com.free.menu.actions.smileAction"銆
銆銆銆銆銆銆label="Smile銆Action"銆
銆銆銆銆銆銆menubarPath="org.eclipse.search.menu/dialogGroup"銆
銆銆銆銆銆銆style="push">銆
銆銆銆</action>銆
銆銆</actionSet>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.popupMenus">銆
銆銆<objectContribution銆
銆銆銆銆銆adaptable="true"銆
銆銆銆銆銆id="com.free.menu.popupMenu"銆
銆銆銆銆銆objectClass="org.eclipse.core.resources.IResource">銆
銆銆銆<menu銆
銆銆銆銆銆銆label="Menu銆Example"銆
銆銆銆銆銆銆path="additions"銆
銆銆銆銆銆銆id="com.free.menu.popupSubMenu">銆
銆銆銆銆銆<separator銆
銆銆銆銆銆銆銆銆name="additions">銆
銆銆銆銆銆</separator>銆
銆銆銆</menu>銆
銆銆銆<action銆
銆銆銆銆銆銆label="Hello銆Action"銆
銆銆銆銆銆銆class="com.free.menu.popup.actions.HelloAction"銆
銆銆銆銆銆銆menubarPath="com.free.menu.popupSubMenu/additions"銆
銆銆銆銆銆銆enablesFor="1"銆
銆銆銆銆銆銆id="com.free.menu.newAction">銆
銆銆銆</action>銆
銆銆</objectContribution>銆
銆</extension>銆
銆銆銆point="org.eclipse.ui.popupMenus">銆
銆銆<objectContribution銆
銆銆銆銆銆adaptable="false"銆
銆銆銆銆銆id="com.free.menu.views.popupMenu"銆
銆銆銆銆銆objectClass="com.free.menu.model.Person">銆
銆銆銆<action銆
銆銆銆銆銆銆class="com.free.menu.actions.GreetAction"銆
銆銆銆銆銆銆enablesFor="+"銆
銆銆銆銆銆銆id="com.free.menu.actions.greetAction"銆
銆銆銆銆銆銆label="Greet銆Action"銆
銆銆銆銆銆銆menubarPath="additions">銆
銆銆銆</action>銆
銆銆銆<visibility>銆
銆銆銆銆銆<objectState銆
銆銆銆銆銆銆銆銆name="firstName"銆
銆銆銆銆銆銆銆銆value="Dan">銆
銆銆銆銆銆</objectState>銆
銆銆銆</visibility>銆
銆銆</objectContribution>銆
銆</extension>銆
銆<extension銆
銆銆銆point="org.eclipse.ui.popupMenus">銆
銆銆<objectContribution銆
銆銆銆銆銆adaptable="false"銆
銆銆銆銆銆id="com.free.menu.views.popupMenu2"銆
銆銆銆銆銆objectClass="com.free.menu.model.Person">銆
銆銆銆<action銆
銆銆銆銆銆銆class="com.free.menu.actions.CryAction"銆
銆銆銆銆銆銆enablesFor="+"銆
銆銆銆銆銆銆id="com.free.menu.actions.cryAction"銆
銆銆銆銆銆銆label="Cry銆Action"銆
銆銆銆銆銆銆menubarPath="additions">銆
銆銆銆銆銆<enablement>銆
銆銆銆銆銆銆<objectState銆
銆銆銆銆銆銆銆銆銆name="firstName"銆
銆銆銆銆銆銆銆銆銆value="David">銆
銆銆銆銆銆銆</objectState>銆
銆銆銆銆銆</enablement>銆
銆銆銆</action>銆
銆銆銆<visibility>銆
銆銆銆銆銆<objectState銆
銆銆銆銆銆銆銆銆name="lastName"銆
銆銆銆銆銆銆銆銆value="Rubel">銆
銆銆銆銆</objectState>銆
銆銆銆</visibility>銆
銆銆</objectContribution>銆
銆</extension>銆
銆銆private銆TreeViewer銆treeViewer;銆
銆銆private銆MenuManager銆fMenuMgr;銆
銆銆private銆Menu銆fMenu;銆
銆銆private銆static銆MenuExplorer銆fInstance銆=銆null;銆
銆銆public銆MenuExplorer()銆{銆
銆銆銆銆fInstance銆=銆this;銆
銆銆}銆
銆銆public銆static銆MenuExplorer銆getInstance(){銆
銆銆銆銆return銆fInstance;銆
銆銆}銆
銆銆public銆void銆createPartControl(Composite銆parent)銆{銆
銆銆銆銆treeViewer銆=銆new銆TreeViewer銆(parent,銆SWT.MULTI);銆
銆銆銆銆treeViewer.setLabelProvider(new銆PersonListLabelProvider());銆
銆銆銆銆treeViewer.setContentProvider(new銆PersonTreeContentProvider());銆
銆銆銆銆treeViewer.setInput(Person.example());銆
銆銆銆銆this.getSite().setSelectionProvider(treeViewer);銆
銆銆銆銆hookContextMenu();銆
銆銆銆銆fInstance銆=銆this;銆
銆銆銆銆銆
銆銆}銆
銆銆public銆void銆setViewMenuActionState(boolean銆state){銆銆銆銆銆
銆銆銆銆JokeCommand.setState(state);銆
銆銆銆銆viewMenuAction();銆
銆銆}銆
銆銆private銆void銆viewMenuAction()銆{銆
銆銆銆銆IActionBars銆bars=銆getViewSite().getActionBars();銆
銆銆銆銆final銆IMenuManager銆menu=銆bars.getMenuManager();銆銆銆
銆銆銆銆銆
銆銆銆銆UIOperation.asyncExecCommand(new銆Runnable(){銆
銆銆銆銆銆銆public銆void銆run()銆{銆
銆銆銆銆銆銆銆銆menu.update("com.free.menu.commands.jokeAction");銆
銆銆銆銆銆銆}銆銆銆銆銆銆銆
銆銆銆銆});銆銆銆銆銆
銆銆}銆
銆銆private銆void銆hookContextMenu()銆{銆
銆銆銆銆fMenuMgr銆=銆new銆MenuManager("#PopupMenu");銆
銆銆銆銆fMenuMgr.setRemoveAllWhenShown(true);銆
銆銆銆銆fMenuMgr.addMenuListener(new銆IMenuListener()銆{銆
銆銆銆銆銆銆public銆void銆menuAboutToShow(IMenuManager銆manager)銆{銆銆銆銆銆銆銆銆銆
銆銆銆銆銆銆}銆
銆銆銆銆});銆
銆銆銆銆fMenu銆=銆fMenuMgr.createContextMenu(treeViewer.getControl());銆
銆
銆銆銆銆treeViewer.getControl().setMenu(fMenu);銆
銆銆銆銆getSite().registerContextMenu(fMenuMgr,銆treeViewer);銆銆銆銆銆銆銆銆
銆銆}銆銆銆
銆銆public銆void銆setFocus()銆{銆
銆銆銆銆treeViewer.getTree().setFocus();銆
銆
銆銆}銆
銆}銆
銆
銆銆private銆String銆firstName銆=銆"John";銆
銆銆private銆String銆lastName銆=銆"Doe";銆
銆銆protected銆int銆age銆=銆37;銆
銆銆public銆Person[]銆children銆=銆new銆Person[0];銆
銆銆public銆Person銆parent銆=銆null;銆
銆銆public銆Person(String銆firstName,銆String銆lastName,銆int銆age)銆{銆
銆銆銆銆this.firstName銆=銆firstName;銆
銆銆銆銆this.lastName銆=銆lastName;銆
銆銆銆銆this.age銆=銆age;銆
銆銆}銆
銆銆public銆Person(String銆firstName,銆String銆lastName,銆int銆age,銆Person[]銆children)銆{銆
銆銆銆銆this(firstName,銆lastName,銆age);銆
銆銆銆銆this.children銆=銆children;銆
銆銆銆銆for銆(int銆i銆=銆0;銆i銆<銆children.length;銆i++)銆{銆
銆銆銆銆銆銆children[i].parent銆=銆this;銆
銆銆銆銆}銆
銆銆}銆
銆銆public銆String銆getFirstName()銆{銆
銆銆銆銆return銆this.firstName;銆
銆銆}銆
銆銆public銆String銆getLastName()銆{銆
銆銆銆銆return銆this.lastName;銆
銆銆}銆
銆銆public銆static銆Person[]銆example()銆{銆
銆銆銆銆return銆new銆Person[]銆{銆
銆銆銆銆銆銆銆銆new銆Person("Dan",銆"Rubel",銆38,銆new銆Person[]銆{銆
銆銆銆銆銆銆銆銆銆銆銆銆new銆Person("Beth",銆"Rubel",銆8),銆
銆銆銆銆銆銆銆銆銆銆銆銆new銆Person("David",銆"Rubel",銆3)銆}),銆
銆銆銆銆銆銆銆銆new銆Person("Eric",銆"Clayberg",銆39,銆new銆Person[]銆{銆
銆銆銆銆銆銆銆銆銆銆銆銆new銆Person("Lauren",銆"Clayberg",銆6),銆
銆銆銆銆銆銆銆銆銆銆銆銆new銆Person("Lee",銆"Clayberg",銆4)銆}),銆
銆銆銆銆銆銆銆銆new銆Person("Mike",銆"Taylor",銆52)銆};銆
銆銆}銆
銆銆public銆String銆toString()銆{銆
銆銆銆銆return銆firstName銆+銆"銆"銆+銆lastName;銆
銆銆}銆
銆銆public銆boolean銆testAttribute(Object銆target,銆String銆name,銆String銆value)銆{銆
銆
銆銆銆銆if銆(target銆instanceof銆Person)銆{銆
銆銆銆銆銆銆Person銆person銆=銆(Person)銆target;銆
銆銆銆銆銆銆if銆(name.equals("firstName")銆&&銆value.equals(person.getFirstName()))銆{銆
銆銆銆銆銆銆銆銆return銆true;銆
銆銆銆銆銆銆}銆
銆
銆銆銆銆銆銆if銆(name.equals("lastName")銆&&銆value.equals(person.getLastName()))銆{銆
銆銆銆銆銆銆銆銆return銆true;銆
銆銆銆銆銆銆}銆
銆銆銆銆}銆
銆銆銆銆return銆false;銆
銆銆}銆
銆}銆
銆point="org.eclipse.gmf.runtime.common.ui.services.action.actionFilterProviders">銆
銆銆銆<ActionFilterProvider銆
銆銆銆銆銆銆class="com.free.menu.PopupActionFilterProvider">銆
銆銆銆銆<Priority銆
銆銆銆銆銆銆銆name="Medium">銆
銆銆銆銆</Priority>銆
銆銆銆銆<Attribute銆
銆銆銆銆銆銆銆name="com.ibm.bg.uml.search.isSupportedType"銆
銆銆銆銆銆銆銆value="supported">銆
銆銆銆銆</Attribute>銆
銆銆銆</ActionFilterProvider>銆
銆</extension>銆
娓呭崟 16. actionFilterProviders 鎵╁睍鐐瑰疄鐜扮被
銆
銆
銆銆public銆PopupActionFilterProvider()銆{銆
銆銆}銆
銆
銆銆public銆boolean銆testAttribute(Object銆target,銆String銆name,銆String銆value)銆{銆
銆銆銆銆銆銆銆
銆銆}銆
銆
銆銆public銆boolean銆provides(IOperation銆operation)銆{銆
銆銆銆銆return銆false;銆
銆銆}銆
銆
銆}
]]>org.eclipse.ui.menus錛堢‘瀹氳彍鍗曞垱寤虹殑鍖哄煙錛?br />
org.eclipse.ui.commands
org.eclipse.ui.handlers錛坈ommand鐨勫叿浣撹涓猴級
org.eclipse.ui.commandImages錛坈omand鐨勫浘鐗囷級
鎵╁睍鐐筼rg.eclipse.ui.menus鐢ㄦ潵瀵硅彍鍗曡繘琛屾墿灞曪紝鍙互瀵逛富鑿滃崟錛屽伐鍏鋒爮錛屼笂涓嬫枃鑿滃崟榪涜鎵╁睍銆?br />
紺轟緥浠g爜濡備笅錛?br />
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<command
commandId="com.xxxx.test.command1"
style="push">
</command>
</menuContribution>
</extension>
鍏朵腑locationURI灞炴ф寚瀹氳彍鍗曟墿灞曠殑浣嶇疆錛屼笂榪頒唬鐮佹槸瀵逛富鑿滃崟榪涜鎵╁睍錛屽鏋滆瀵瑰伐鍏鋒爮鍜屼笂涓嬫枃鑿滃崟榪涜鎵╁睍錛屼功鍐欐牸寮忓涓嬶細
toolbar:org.eclipse.ui.main.toolbar?after=additions
popup:org.eclipse.ui.popup.any?after=additions(涓婁笅鏂囪彍鍗曞湪浠諱綍浣嶇疆鍑虹幇)
popup:org.eclipse.ui.views.ProblemView?after=additions(涓婁笅鏂囪彍鍗曞湪闂瑙嗗浘涓嚭鐜?
commandId灞炴ф寚瀹氳menu瀵瑰簲鐨刢ommand錛屼竴涓猰enu鍙互瀵瑰簲澶氫釜command銆?br />
command鍙互閫氳繃鎵╁睍鐐筼rg.eclipse.ui.commands鎵╁睍錛岀ず渚嬩唬鐮佸涓嬶細
<extension
point="org.eclipse.ui.commands">
<category
id="com.xxxx.test.category1"
name="MenuTest">
</category>
<command
categoryId="="com.xxxx.test.category1"
id="com.xxxx.test.command1"
name="CommandA">
</command>
</extension>
鑷充簬Command鍏蜂綋瑕佸仛浠涔堬紝闇瑕侀氳繃鎵╁睍鐐筼rg.eclipse.ui.handlers鏉ユ寚瀹氾紝紺轟緥浠g爜濡備笅錛?br />
<extension
point="org.eclipse.ui.handlers">
<handler
class="com.xxxx.test.SampleHandler"
commandId="com.xxxx.test.command1">
</handler>
</extension>
榪樻湁鎵╁睍鐐筼rg.eclipse.ui.commandImages錛屽彲浠ユ寚瀹欳ommand瀵瑰簲鐨勫浘鏍囥?br />
<extension
point="org.eclipse.ui.commandImages">
<image
commandId="com.xxxx.test.command1"
icon="icons/sample.gif">
</image>
</extension>
]]>
鍔熻兘錛氳鎵╁睍鐐逛富瑕佺敤鏉ヨ緗閫夐」鐨勫垵濮嬪鹼紱
鎵╁睍鐐圭ず渚嬶細
<extension
point="org.eclipse.core.runtime.preferences">
<initializer
class="com.xxxx.test.AbstractPreferenceInitializer1">
</initializer>
</extension>
initializer鎸囧畾璁劇疆棣栭夐」鍒濆鍊肩殑綾伙紝紺轟緥浠g爜濡備笅錛?br />
public class AbstractPreferenceInitializer1 extends
AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
IPreferenceStore prefs = Activator.getDefault().getPreferenceStore();
prefs.setDefault("MAX", 1000);
}
}
涓婅堪浠g爜璁劇疆灞炴AX鐨勫垵濮嬪間負1000錛岃繖涓睘鎬у氨鍙互琚閫夐」浣跨敤浜嗐?br />
浣跨敤鎵╁睍鐐?span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-fareast-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang="EN-US">org.eclipse.ui.preferencePages鎵╁睍棣栭夐」
鎵╁睍鐐圭ず渚嬶細
<extension
point="org.eclipse.ui.preferencePages">
<page
class="com.xxxx.test.WorkbenchPreferencePage1"
id="com.xxxx.test.page1"
name="testName">
</page>
</extension>
榪欐牱灝卞彲浠ュ湪WorkbenchPreferencePage1綾諱腑浣跨敤鍒氭墠瀹氫箟鐨勫睘鎬AX浜嗭紝紺轟緥浠g爜濡備笅錛?br />
public class WorkbenchPreferencePage1 extends FieldEditorPreferencePage implements
IWorkbenchPreferencePage {
public void init(IWorkbench workbench) {
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
@Override
protected void createFieldEditors() {
int max = getPreferenceStore().getDefaultInt("MAX");
System.out.println("
"+max);
}
}
]]>
MyEclipse has detected that less than 5% of the 64MB of Perm
Gen (Non-heap memory) space remains. It is strongly recommended
that you exit and restart MyEclipse with new virtual machine memory
paramters to increase this memory. Failure to do so can result in
data loss. The recommended Eclipse memory parameters are:
eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
eclipse鏍圭洰褰曚笅闈㈢殑 eclipse.ini 閰嶇疆 浠庣綉涓婃悳浜嗕簺璧勬枡
-vmargs錛氳鏄庡悗闈㈡槸VM鐨勫弬鏁?br />
-Xms128m錛氳櫄鎷熸満鍗犵敤緋葷粺鐨勬渶灝忓唴瀛?br />
-Xmx512m錛氳櫄鎷熸満鍗犵敤緋葷粺鐨勬渶澶у唴瀛樼殑5%涓?5.6M錛岀悊璁轟笂瑕佹眰-Xmx鐨勬暟鍊間笌-XX:MaxPermSize蹇呴』澶т簬25.6M
-XX:PermSize錛氭渶灝忓爢澶у皬銆備竴鑸姤鍐呭瓨涓嶈凍鏃?閮芥槸璇磋繖涓お灝? 鍫嗙┖闂村墿浣欏皬浜?%灝變細璀﹀憡,寤鴻鎶婅繖涓◢寰澶т竴鐐?涓嶈繃瑕佽鑷繁鏈哄櫒鍐呭瓨澶у皬鏉ヨ緗?br />
-XX:MaxPermSize錛氭渶澶у爢澶у皬銆傝繖涓篃閫傚綋澶т簺
鎶婇噷闈㈢殑鍙傛暟鏀逛負
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=128M
-XX:MaxPermSize=256M
闂瑙e喅錛?/p>
浠庣綉涓婄殑璧勬枡鐪婸ermSize澶т竴鐐硅偗瀹氭洿濂斤紝鑰屼笖鏈濂芥槸璁劇疆PermSize鍜孧axPermSize涓鏍峰ぇ銆傜悊鐢卞涓嬶細
PermSize 鍜孧axPermSize濡傛灉璁劇疆涓虹浉鍚岃繕鍙互鍦ㄤ竴瀹氱▼搴︿笂鎻愰珮鎬ц兘錛屽洜涓猴紝PermSize鍦ㄤ笉鏂殑鍙樺寲涓細闇瑕佽漿縐誨叾涓殑鏁版嵁銆傚鏋滃浐瀹氫簡浠ュ悗錛屽垯鍙互鍑忓皯姣忔鎵╁ぇPermSize甯︽潵鐨勬ц兘鎹熷け銆?/p>
1銆丳ermGen space綆浠?
銆銆
銆銆PermGen space鐨勫叏縐版槸Permanent Generation space錛屾槸鎸囧唴瀛樼殑姘鎬箙淇濆瓨鍖哄煙OutOfMemoryError: PermGen space浠庤〃闈笂鐪嬪氨鏄唴瀛樼泭鍑猴紝瑙e喅鏂規硶涔熶竴瀹氭槸鍔犲ぇ鍐呭瓨銆?
銆銆
銆銆璇磋涓轟粈涔堜細鍐呭瓨鐩婂嚭錛?
銆銆錛?錛夎繖涓閮ㄥ垎鐢ㄤ簬瀛樻斁Class鍜孧eta鐨勪俊鎭紝Class鍦ㄨ Load鐨勬椂鍊欒鏀懼叆PermGen space鍖哄煙錛屽畠鍜屽拰瀛樻斁Instance鐨凥eap鍖哄煙涓嶅悓銆?
銆銆錛?錛?GC(Garbage Collection)涓嶄細鍦ㄤ富紼嬪簭榪愯鏈熷PermGen space榪涜娓呯悊錛屾墍浠ュ鏋滀綘鐨凙PP浼歀OAD寰堝CLASS 鐨勮瘽,灝卞緢鍙兘鍑虹幇PermGen space閿欒銆傝繖縐嶉敊璇父瑙佸湪web鏈嶅姟鍣ㄥJSP榪涜pre compile鐨勬椂鍊欍?
銆銆
銆銆濡傛灉浣犵殑WEB APP涓嬮兘鐢ㄤ簡澶ч噺鐨勭涓夋柟jar錛屽叾澶у皬瓚呰繃浜唈vm榛樿鐨勫ぇ灝?4M)閭d箞灝變細浜х敓姝ら敊璇俊鎭簡銆?/p>
瑙e喅鏂規硶錛?鎵嬪姩璁劇疆MaxPermSize澶у皬
銆銆
銆銆淇敼TOMCAT_HOME/bin/catalina.bat錛屽湪echo "Using CATALINA_BASE: $CATALINA_BASE"涓婇潰鍔犲叆浠ヤ笅琛岋細
銆銆 JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
銆銆寤鴻錛氬皢鐩稿悓鐨勭涓夋柟jar鏂囦歡縐葷疆鍒皌omcat/shared/lib鐩綍涓嬶紝榪欐牱鍙互鍑忓皯jar 鏂囨。閲嶅鍗犵敤鍐呭瓨
1銆傚弬鏁扮殑鍚箟
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
鍙傛暟涓?vmargs鐨勬剰鎬濇槸璁劇疆JVM鍙傛暟錛屾墍浠ュ悗闈㈢殑鍏跺疄閮芥槸JVM鐨勫弬鏁頒簡錛屾垜浠鍏堜簡瑙d竴涓婮VM鍐呭瓨綆$悊鐨勬満鍒訛紝鐒跺悗鍐嶈В閲婃瘡涓弬鏁頒唬琛ㄧ殑鍚箟銆?br />
鍫?Heap)鍜岄潪鍫?Non-heap)鍐呭瓨
鎸夌収瀹樻柟鐨勮娉曪細“Java 铏氭嫙鏈哄叿鏈変竴涓爢錛屽爢鏄繍琛屾椂鏁版嵁鍖哄煙錛屾墍鏈夌被瀹炰緥鍜屾暟緇勭殑鍐呭瓨鍧囦粠姝ゅ鍒嗛厤銆傚爢鏄湪 Java 铏氭嫙鏈哄惎鍔ㄦ椂鍒涘緩鐨勩?#8221;“鍦↗VM涓爢涔嬪鐨勫唴瀛樼О涓洪潪鍫嗗唴瀛?Non-heap memory)”銆傚彲浠ョ湅鍑篔VM涓昏綆$悊涓ょ綾誨瀷鐨勫唴瀛橈細鍫嗗拰闈炲爢銆傜畝鍗曟潵璇村爢灝辨槸Java浠g爜鍙強鐨勫唴瀛橈紝鏄暀緇欏紑鍙戜漢鍛樹嬌鐢ㄧ殑錛涢潪鍫嗗氨鏄疛VM鐣欑粰鑷繁鐢ㄧ殑錛屾墍浠ユ柟娉曞尯銆丣VM鍐呴儴澶勭悊鎴栦紭鍖栨墍闇鐨勫唴瀛?濡侸IT緙栬瘧鍚庣殑浠g爜緙撳瓨)銆佹瘡涓被緇撴瀯(濡傝繍琛屾椂甯告暟姹犮佸瓧孌靛拰鏂規硶鏁版嵁)浠ュ強鏂規硶鍜屾瀯閫犳柟娉曠殑浠g爜閮藉湪闈炲爢鍐呭瓨涓?
鍫嗗唴瀛樺垎閰?br />
JVM鍒濆鍒嗛厤鐨勫唴瀛樼敱-Xms鎸囧畾錛岄粯璁ゆ槸鐗╃悊鍐呭瓨鐨?/64錛?strong>JVM鏈澶у垎閰嶇殑鍐呭瓨鐢?Xmx鎸囧畾錛岄粯璁ゆ槸鐗╃悊鍐呭瓨鐨?/4銆傞粯璁ょ┖浣欏爢鍐呭瓨灝忎簬40%鏃訛紝JVM灝變細澧炲ぇ鍫嗙洿鍒?Xmx鐨勬渶澶ч檺鍒訛紱絀轟綑鍫嗗唴瀛樺ぇ浜?0%鏃訛紝JVM浼氬噺灝戝爢鐩村埌-Xms鐨勬渶灝忛檺鍒躲傚洜姝ゆ湇鍔″櫒涓鑸緗?Xms銆?Xmx鐩哥瓑浠ラ伩鍏嶅湪姣忔GC 鍚庤皟鏁村爢鐨勫ぇ灝忋?
闈炲爢鍐呭瓨鍒嗛厤
JVM浣跨敤-XX:PermSize璁劇疆闈炲爢鍐呭瓨鍒濆鍊?/strong>錛岄粯璁ゆ槸鐗╃悊鍐呭瓨鐨?/64錛?strong>鐢盭X:MaxPermSize璁劇疆鏈澶ч潪鍫嗗唴瀛樼殑澶у皬錛岄粯璁ゆ槸鐗╃悊鍐呭瓨鐨?/4銆?
JVM鍐呭瓨闄愬埗(鏈澶у?
棣栧厛JVM鍐呭瓨闄愬埗浜庡疄闄呯殑鏈澶х墿鐞嗗唴瀛橈紝鍋囪鐗╃悊鍐呭瓨鏃犻檺澶х殑璇濓紝JVM鍐呭瓨鐨勬渶澶у艱窡鎿嶄綔緋葷粺鏈夊緢澶х殑鍏崇郴銆傜畝鍗曠殑璇村氨32浣嶅鐞嗗櫒铏界劧鍙帶鍐呭瓨絀洪棿鏈?GB,浣嗘槸鍏蜂綋鐨勬搷浣滅郴緇熶細緇欎竴涓檺鍒訛紝榪欎釜闄愬埗涓鑸槸2GB-3GB錛堜竴鑸潵璇碬indows緋葷粺涓嬩負1.5G-2G錛孡inux緋葷粺涓嬩負2G-3G錛夛紝鑰?4bit浠ヤ笂鐨勫鐞嗗櫒灝變笉浼氭湁闄愬埗浜嗐?/p>
2. 涓轟粈涔堟湁鐨勬満鍣ㄦ垜灝?Xmx鍜?XX:MaxPermSize閮借緗負512M涔嬪悗Eclipse鍙互鍚姩錛岃屾湁浜涙満鍣ㄦ棤娉曞惎鍔紵
閫氳繃涓婇潰瀵笿VM鍐呭瓨綆$悊鐨勪粙緇嶆垜浠凡緇忎簡瑙e埌JVM鍐呭瓨鍖呭惈涓ょ錛氬爢鍐呭瓨鍜岄潪鍫嗗唴瀛橈紝鍙﹀JVM鏈澶у唴瀛橀鍏堝彇鍐充簬瀹為檯鐨勭墿鐞嗗唴瀛樺拰鎿嶄綔緋葷粺銆傛墍浠ヨ璁劇疆VM鍙傛暟瀵艱嚧紼嬪簭鏃犳硶鍚姩涓昏鏈変互涓嬪嚑縐嶅師鍥狅細
1) 鍙傛暟涓?Xms鐨勫煎ぇ浜?Xmx錛屾垨鑰?XX:PermSize鐨勫煎ぇ浜?XX:MaxPermSize錛?br />
2) -Xmx鐨勫煎拰-XX:MaxPermSize鐨勬誨拰瓚呰繃浜咼VM鍐呭瓨鐨勬渶澶ч檺鍒訛紝姣斿褰撳墠鎿嶄綔緋葷粺鏈澶у唴瀛橀檺鍒訛紝鎴栬呭疄闄呯殑鐗╃悊鍐呭瓨絳夌瓑銆傝鍒板疄闄呯墿鐞嗗唴瀛樿繖閲岄渶瑕佽鏄庝竴鐐圭殑鏄紝濡傛灉浣犵殑鍐呭瓨鏄?024MB錛屼絾瀹為檯緋葷粺涓敤鍒扮殑騫朵笉鍙兘鏄?024MB錛屽洜涓烘湁涓閮ㄥ垎琚‖浠跺崰鐢ㄤ簡銆?/p>
3. 涓轟綍灝嗕笂闈㈢殑鍙傛暟鍐欏叆鍒癳clipse.ini鏂囦歡Eclipse娌℃湁鎵ц瀵瑰簲鐨勮緗紵
閭d負浠涔堝悓鏍風殑鍙傛暟鍦ㄥ揩鎹鋒柟寮忔垨鑰呭懡浠よ涓湁鏁堣屽湪eclipse.ini鏂囦歡涓槸鏃犳晥鐨勫憿錛熻繖鏄洜涓烘垜浠病鏈夐伒瀹坋clipse.ini鏂囦歡鐨勮緗鍒欙細
鍙傛暟褰㈠“欏?鍊?#8221;榪欑褰㈠紡錛屼腑闂存湁絀烘牸鐨勯渶瑕佹崲琛屼功鍐欙紝濡傛灉鍊間腑鏈夌┖鏍肩殑闇瑕佺敤鍙屽紩鍙峰寘鎷搗鏉ャ傛瘮濡傛垜浠嬌鐢?vm C:\Java\jre1.6.0\bin\javaw.exe鍙傛暟璁劇疆铏氭嫙鏈猴紝鍦╡clipse.ini鏂囦歡涓鍐欐垚榪欐牱錛?br />
-vm
C:\Java\jre1.6.0\bin\javaw.exe
鎸夌収涓婇潰鎵璇寸殑錛屾渶鍚庡弬鏁板湪eclipse.ini涓彲浠ュ啓鎴愯繖涓牱瀛愶細
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
瀹為檯榪愯鐨勭粨鏋滃彲浠ラ氳繃Eclipse涓?#8220;Help”-“About Eclipse SDK”紿楀彛閲岄潰鐨?#8220;Configuration Details”鎸夐挳榪涜鏌ョ湅銆?br />
鍙﹀闇瑕佽鏄庣殑鏄紝Eclipse鍘嬬緝鍖呬腑鑷甫鐨別clipse.ini鏂囦歡鍐呭鏄繖鏍風殑錛?br />
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
鍏朵腑–launcher.XXMaxPermSize錛堟敞鎰忔渶鍓嶉潰鏄袱涓繛鎺ョ嚎錛夎窡-XX:MaxPermSize鍙傛暟鐨勫惈涔夊熀鏈槸涓鏍風殑錛屾垜瑙夊緱鍞竴鐨勫尯鍒氨鏄墠鑰呮槸eclipse.exe鍚姩鐨勬椂鍊欒緗殑鍙傛暟錛岃屽悗鑰呮槸eclipse鎵浣跨敤鐨凧VM涓殑鍙傛暟銆傚叾瀹炰簩鑰呰緗竴涓氨鍙互浜嗭紝鎵浠ヨ繖閲屽彲浠ユ妸–launcher.XXMaxPermSize鍜屼笅涓琛屼嬌鐢?娉ㄩ噴鎺夈?/p>
3. 鍏朵粬鐨勫惎鍔ㄥ弬鏁般?濡傛灉浣犳湁涓涓弻鏍哥殑CPU錛屼篃璁稿彲浠ュ皾璇曡繖涓弬鏁?
]]>
鍦ㄧ綉涓婃壘浜嗕簺璧勬枡錛屾壘鍒頒簡瑙e喅鏂規硶銆?br />
鍙淇敼eclipse.ini鏂囦歡鍗沖彲銆備慨鏀瑰唴瀹瑰涓嬶細
-startup
plugins\org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar
--launcher.library
plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800
-showsplash
vm
D:\Java\jdk15011\bin\javaw.exe
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
鍏朵腑綺椾綋閮ㄥ垎涓烘柊澧炲唴瀹廣?
]]>
鏈榪戝湪鍋?/span>Eclipse鎻掍歡寮鍙戠殑鏃跺欙紝鍦ㄥ浗闄呭寲鐨勯棶棰樹笂閬囧埌榪欐牱闂錛屾瘮濡傛垜鐨?/span>plugin.xml鏂囦歡涓紝閫氳繃%xxx鏉ュ紩鐢?/span>plugin_zh.properties涓搴旈敭xxx鐨勪俊鎭椂錛屽湪鎻掍歡榪愯鏃訛紝鐩稿簲鐨勪俊鎭樉紺轟笉浜嗭紝鍚庢潵榪涜繃鐮旂┒錛屽彂鐜版槸鐢變簬鍦?/span>MANIFEST.MF灝戦厤緗簡涓欏歸犳垚鐨?/span>
Bundle-Localization: plugin錛?/span>
鑰岃繖涓欏歸厤緗垜鍦?/span>Overview鏍囩欏典笂娌℃湁鎵懼埌鐩稿簲璁劇疆鐨勫湴鏂癸紝鎶婅繖涓湪MANIFEST.MF鍔犱笂錛屾彃浠跺湪榪愯鏃訛紝灝卞彲浠ユ樉紺?/span>plugin_zh.properties涓畾涔夌殑娑堟伅浜嗐?/span>
鏈榪戝湪Eclipse鎻掍歡寮鍙戜腑閬囧埌榪欐牱鐨勯棶棰橈紝鎴戜嬌鐢ㄥ鍏ユ墿灞曠偣
涔熷氨鏄湪璋冨紡Java Application鐨勫璇濇涓紝澧炲姞涓涓?/span>Tab欏碉紝Tab欏電殑鍚嶅瓧涓?/span>SqlDebugTab錛屽湪榪欎釜Tab欏典笂澧炲姞鍑犱釜澶嶉夋錛屽閫夋瑕佹樉紺鴻鍥劇殑鍚嶇О錛屽鏋滅敤鎴烽夋嫨鏌愪釜澶嶉夋錛岀偣“Debug”鍚庯紝灝嗘樉紺烘寚瀹氱殑瑙嗗浘錛屽彲鏄湪com.example.launch.SqlDebugLaunchDelegate綾諱腑鐨?/span>launch鏂規硶涓皟鐢?/span>PlatformUI.getWorkbench().getActiveWorkbenchWindow()錛屽緱鍒扮殑瀵硅薄鍗翠負null錛岃皟璇曠▼搴忔墠鍙戠幇錛岃繍琛?/span>com.example.launch.SqlDebugLaunchDelegate綾繪槸錛岃蛋鐨勬槸鏂扮嚎紼嬶紝涔熷氨鏄鐐?#8220;Debug”鎸夐挳鏃訛紝Eclipse騫沖彴鍚姩鐨勬槸鏂扮殑綰跨▼錛堥潪UI綰跨▼錛夛紝鑰屽湪鏂扮嚎紼嬩腑鏄彇涓嶅埌ActiveWorkbenchWindow瀵硅薄錛屼負浜嗚В鍐寵繖涓棶棰?/span>,鑺辮垂浜嗗緢澶氭椂闂達紝鏈鍚庣粓浜庢壘鍒拌В鍐蟲柟娉?/span>,鍦?/span>launch鏂規硶閫氳繃濡備笅紼嬪簭鏉ユ樉紺鴻鍥撅紝灝卞彲浠ヨВ鍐充笂闈㈤亣鍒扮殑闂錛?/span>
鍦╠eclareGlobalActionKeys澧炲姞瀵瑰鍒跺懡浠ょ殑鐢蟲槑錛屽悓鏃舵妸灞炴ontributorClass鎸囧畾涓鴻繖涓被錛屽寘鍚叏璺緞銆傚啀瀹氫箟澶嶅埗鍔ㄤ綔CopyAction錛屼唬鐮佸涓嬶細
娉ㄦ剰鏋勯犲嚱鏁頒腑涓瀹氳鎶婅繖涓猘ction鐨刬d璁劇疆涓篈ctionFactory.COPY.getId()錛屽拰鍓嶉潰緇熶竴璧鋒潵錛?/p>
鍒拌繖鍎胯繕娌℃湁緇撴潫錛岃繕蹇呴』鍦ㄧ紪杈戝櫒綾諱腑娉ㄥ唽榪欎釜action錛岃鐩栫紪杈戝櫒鐖剁被涓殑createActions()鏂規硶錛?/p>
榪欐牱褰撴垜浠偣澶嶅埗鎸夐挳涔嬪悗錛屾祦紼嬭璁″櫒灝辨妸鎴戜滑閫夋嫨鐨勫唴瀹規斁鍒板壀鍒囨澘涓婏紝涓嬩竴姝ヨ鍋氱殑灝辨槸綺樿創浜嗐?/p>
瑕佷嬌綺樿創鎸夐挳鍙敤錛屾墍鍋氱殑淇敼鍜屽鍒剁被浼鹼紝鍦ㄧ被WorkflowActionContributor 鐨勬柟娉昫eclareGlobalActionKeys涓鍔燼ddGlobalActionKey(ActionFactory.PASTE.getId())
澧炲姞PasteAction綾伙紝浠g爜濡備笅錛?/p>