隨筆 - 119  文章 - 3173  trackbacks - 0
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          交友莫獨酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526712
          • 排名 - 92

          最新評論

          為了讓偶寫的eclipse系統托盤插件EaseTray1.0插件能在eclipse啟動時加載,泡了半天書店,在于找到了怎么讓eclipse啟動時執行指定的程序,離解決問題又近了一步。現在和大家分享下收獲。

          新建一個插件項目,增加一個org.eclipse.ui.startup擴展點,2006123101.jpg
          指向直接寫的test.EasyStartup類
          EasyStartup:
          ?1?package?test;
          ?2?
          ?3?import?org.eclipse.swt.widgets.Display;
          ?4?import?org.eclipse.ui.IStartup;
          ?5?
          ?6?public?class?EasyStartup?implements?IStartup?{
          ?7?????public?void?earlyStartup()?{
          ?8?????????Display.getDefault().syncExec(new?Runnable()?{
          ?9?????????????public?void?run()?{
          10?????????????????System.out.println("hello?start");
          11?????????????}
          12?????????});
          13?????}
          14?
          15?}
          作為插件運行,控制臺會輸出:
          hello start

          呵呵,小小的成功。
          但是我還是無法獲取IWorkbenchWindow對象。。。。。。。。
          這樣我的插件還是不能啟動時強制加載并初始化。。。。。。。。
          誰知道怎么獲取IWorkbenchWindow!?
          posted on 2006-12-31 14:38 交口稱贊 閱讀(3952) 評論(21)  編輯  收藏 所屬分類: Eclipse RCP SWT

          FeedBack:
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 15:28 交口稱贊
          請知道的朋友指教下怎么弄  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 16:35 BeanSoft
          偶發現可以用 Display.getActiveShell (), 可以做個線程, 不停的循環檢測... 但是怎么判斷是不是 IWorkbenchWindow 偶就不清楚怎么搞了, 貌似有個朋友寫的怎么運行時候更改 RCP 應用標題的時候有類似代碼.  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 17:29 交口稱贊
          要監聽退出事件必須在IWorkbenchWindow對象加
          不然實現不了退出時最小化
          我在啟動時能執行初始化,
          但是獲取不到shell
          和IWorkbenchWindow  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 17:36 交口稱贊
          你說的那篇文章我看了,他是用自己的products去取代eclipse的

          相當于把eclipse的東西作為插件放到自己的產品中加載,

          不是我想要的  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 17:46 交口稱贊
          現在可以實現自動加載
          最小化時候到托盤

          關閉還不行
          等都可以 了我再放新版本  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 17:50 交口稱贊
          汗。。。。。。。。。
          你天天在線啊
          我試試

          我剛才寫的
          Shell aa = Display.getCurrent().getActiveShell();
          System.out.println(aa.getText());
          for(Shell s :aa.getShells()) {
          System.out.println(s.getText());
          }

          System.out.println("hello start");
          沒反應。。。。。。
          試試他的  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 17:59 BeanSoft
          public static void changeAppTitle(String newTitle) {
          Display display = Display.getDefault();
          if (display != null) {
          // Look at all the shells and pick the first one
          // that is a workbench window.
          Shell shells[] = display.getShells();
          for (int i = 0; i < shells.length; i++) {
          Object data = shells[i].getData();
          // Check whether this shell points to the Application main window's shell:
          if (data instanceof IWorkbenchWindow) {
          shells[i].setText(newTitle);
          break;
          }
          }
          }
          }

          我試了應該可以, 只不過不要非法操作線程了..呵呵.今天來單位玩,所以在..  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 18:00 交口稱贊
          瓦咔咔卡

          找到了

          package test;

          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Shell;
          import org.eclipse.ui.IStartup;
          import org.eclipse.ui.IWorkbenchWindow;

          public class EasyStartup implements IStartup {
          public void earlyStartup() {
          Display.getDefault().syncExec(new Runnable() {
          public void run() {
          Shell[] shells = Display.getCurrent().getShells();
          System.out.println(shells.length);
          for(Shell _shell :shells) {
          if (_shell.getData() instanceof IWorkbenchWindow) {
          System.out.println("找到了!");
          }
          }

          System.out.println("hello start");
          }
          });
          }

          }

          多謝。。。。。。。。。。

          呵呵
          明天發個完美版的插件。。。。。。。。。。。。。
          終于能睡著覺了、
          不枉今天受的書店老板的白眼
          多謝BeanSoft   回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2006-12-31 19:34 交口稱贊
          哈哈
          搞定了。
          終于弄好了。  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-01-24 13:51 alan
          你好,我照你的方法去添加了這個擴展點,但在后臺沒有看到打印出信息,我用的是eclipse3.2.1,我的代碼如下:
          在plugin.xml中
          <extension
          id="loginDialog"
          point="org.eclipse.ui.startup">
          <startup class="rcp3.LoginDialog" />
          </extension>
          rcp3.LoginDialog的代碼如下:
          package rcp3;

          import org.eclipse.jface.dialogs.MessageDialog;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.ui.IStartup;

          public class LoginDialog implements IStartup {

          public void earlyStartup() {
          System.out.println("Hello");
          Display.getDefault().syncExec(new Runnable() {
          public void run() {
          MessageDialog.openInformation(Display.getDefault()
          .getActiveShell(), "Title", "Message");
          }
          });
          }
          }

          后臺根本沒有打印出“Hello”,請問這是什么原因啊,謝謝!  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-01-24 14:44 交口稱贊
          System.out.println("Hello");
          寫到run里面試試  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-03-20 16:06 iceman
          用這個試試。

          public void earlyStartup() {
          final IWorkbench workbench = PlatformUI.getWorkbench();
          workbench.getDisplay().asyncExec(new Runnable() {
          public void run() {
          IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
          if (window != null) {
          System.out.println("hello start");
          MessageDialog.openInformation(
          window.getShell(),
          "iceman Plug-in",
          "Hello1, Eclipse world");
          }
          }
          });
          }  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-30 11:47 Squall
          其實這個可不可作為一個驗證,當plugin啟動時驗證用戶是否有合法使用權?  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-30 12:24 交口稱贊
          可以,但是光這個不行。
          你可以看看mueclipse怎么搞的  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-30 16:19 Squall
          你指myeclipse?但它不是免費的,代碼也沒有公開

          現在想為開發的插件做一個注冊,但找不到途徑.....
            回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-30 20:31 交口稱贊
          但是他只有加密算法部分混淆了
          其他的代碼還是可以反編譯看看的

          問題是java這塊很難做到不被破解  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-31 09:35 Squall
          至于破不破解就暫時忽略不計吧,

          請問你知不知道,如果啟動了eclipse后,有什么辦法令插件停止使用

          我試過在earlyStartup()里獲得那個插件對象后,

          調用shutdown(),getBundle().stop()都不行,插件仍然可以使用  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-31 10:22 交口稱贊
          我覺得你想反了
          你功能插件去調用你的驗證插件
          驗證通過就給用,不通過不給用
          每個重要的方法都驗證一下

          驗證插件就是一個服務
          而不要反過來用驗證插件去控制其他的插件
          驗證插件應該是被動的

            回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-31 11:01 Squall
          也就是說關于這個插件的每一個功能,如:“新建項目功能”,“運行應用功

          能”等,每調用到相關功能(即調用相關方法)之前驗證一下?

          根據你所說的,我想到如果啟動時就是說插件的start()方法調用時,

          設一個boolean標志位,然后在調用相關的功能方法時查詢這個標志位,

          再決定是否繼續執行,你的意思是不是大概是這樣?  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2007-05-31 12:14 交口稱贊
          也就是說關于這個插件的每一個功能,如:“新建項目功能”,“運行應用功

          能”等,每調用到相關功能(即調用相關方法)之前驗證一下?

          是這樣的。

          當我覺得最好不要去直接驗證標志位,這樣太容易被破解了。
          去調用方法去驗證。
          最好搞個線程什么的。
          反正越繞越好越復雜越好。。。。。

          歡迎有經驗的朋友一起討論  回復  更多評論
            
          # re: 讓eclipse啟動時執行指定的程序 2015-02-04 17:45 suren
          學習了。

          來自:素人派
          http://surenpi.com  回復  更多評論
            
          主站蜘蛛池模板: 昌都县| 科技| 兴宁市| 怀远县| 耒阳市| 武宁县| 固阳县| 祥云县| 清河县| 枞阳县| 旬阳县| 赣州市| 晋江市| 日照市| 阳信县| 郴州市| 邹平县| 峡江县| 福清市| 故城县| 大化| 中方县| 全州县| 孟州市| 缙云县| 天气| 淄博市| 台湾省| 平乐县| 石家庄市| 九龙坡区| 阜城县| 罗平县| 邳州市| 和政县| 灯塔市| 新泰市| 仲巴县| 阿拉善右旗| 额济纳旗| 锡林郭勒盟|