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

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

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526731
          • 排名 - 92

          最新評論

          ? 像WEB一樣的樹形導航RCP,廢話不說,先看效果圖。

          ?
          模塊三
          點擊不同的樹節點可以動態切換右邊的view,界面切換是一瞬間的,不閃。

          上代碼:
          Perspective
          package?org.hermit.pojotools.tt;

          import?org.eclipse.ui.IFolderLayout;
          import?org.eclipse.ui.IPageLayout;
          import?org.eclipse.ui.IPerspectiveFactory;

          public?class?pp?implements?IPerspectiveFactory?{

          ????
          /**
          ?????*?Creates?the?initial?layout?for?a?page.
          ?????
          */
          ????
          public?void?createInitialLayout(IPageLayout?layout)?{
          ????????String?editorArea?
          =?layout.getEditorArea();
          ????????layout.setEditorAreaVisible(
          false);
          ????????addFastViews(layout);
          ????????addViewShortcuts(layout);
          ????????addPerspectiveShortcuts(layout);


          ????????layout.addView(t.ID,?IPageLayout.LEFT,?
          0.5f,?editorArea);
          ????????IFolderLayout?folderLayout?
          =?layout.createFolder("folder",?IPageLayout.LEFT,?0.5f,editorArea);
          ????????folderLayout.addView(t1.ID);
          ????}

          ????
          /**
          ?????*?Add?fast?views?to?the?perspective.
          ?????
          */
          ????
          private?void?addFastViews(IPageLayout?layout)?{
          ????}

          ????
          /**
          ?????*?Add?view?shortcuts?to?the?perspective.
          ?????
          */
          ????
          private?void?addViewShortcuts(IPageLayout?layout)?{
          ????}

          ????
          /**
          ?????*?Add?perspective?shortcuts?to?the?perspective.
          ?????
          */
          ????
          private?void?addPerspectiveShortcuts(IPageLayout?layout)?{
          ????}

          }
          樹形導航view
          package?org.hermit.pojotools.tt;

          import?org.eclipse.jface.action.IMenuManager;
          import?org.eclipse.jface.action.IToolBarManager;
          import?org.eclipse.jface.viewers.TreeViewer;
          import?org.eclipse.swt.SWT;
          import?org.eclipse.swt.events.MouseAdapter;
          import?org.eclipse.swt.events.MouseEvent;
          import?org.eclipse.swt.events.SelectionAdapter;
          import?org.eclipse.swt.events.SelectionEvent;
          import?org.eclipse.swt.layout.FillLayout;
          import?org.eclipse.swt.widgets.Composite;
          import?org.eclipse.swt.widgets.Tree;
          import?org.eclipse.swt.widgets.TreeItem;
          import?org.eclipse.ui.ISharedImages;
          import?org.eclipse.ui.IViewPart;
          import?org.eclipse.ui.IWorkbenchPage;
          import?org.eclipse.ui.PartInitException;
          import?org.eclipse.ui.PlatformUI;
          import?org.eclipse.ui.part.ViewPart;

          public?class?t?extends?ViewPart?{

          ????
          private?Tree?tree;

          ????
          public?static?final?String?ID?=?"org.hermit.pojotools.tt.t";?//$NON-NLS-1$

          ????
          private?String?curID?=?t1.ID;

          ????
          /**
          ?????*?Create?contents?of?the?view?part
          ?????*?
          ?????*?
          @param?parent
          ?????
          */
          ????@Override
          ????
          public?void?createPartControl(Composite?parent)?{
          ????????Composite?container?
          =?new?Composite(parent,?SWT.NONE);
          ????????container.setLayout(
          new?FillLayout());

          ????????
          final?TreeViewer?treeViewer?=?new?TreeViewer(container,?SWT.BORDER);
          ????????tree?
          =?treeViewer.getTree();
          ????????tree.addMouseListener(
          new?MouseAdapter()?{
          ????????????
          public?void?mouseDown(MouseEvent?e)?{
          ????????????????TreeItem?item?
          =?(TreeItem)?tree.getSelection()[0];
          ????????????????String?id?
          =?(String)?item.getData();
          ????????????????
          if?(id?!=?null?&&?!id.equals(curID))?{
          ????????????????????IWorkbenchPage?wbp?
          =?getViewSite().getPage();

          ????????????????????
          try?{
          ????????????????????????IViewPart?view?
          =?wbp.findView(curID);

          ????????????????????????
          if?(view?!=?null)?{
          //下面兩行不能顛倒,一定要先打開新的VIEW才能關閉老的,否則布局就會亂掉
          ????????????????????????????wbp.showView(id);
          ????????????????????????????wbp.hideView(view);

          ????????????????????????????curID?
          =?id;
          ????????????????????????}

          ????????????????????}?
          catch?(PartInitException?e1)?{
          ????????????????????????
          //?TODO?自動生成?catch?塊
          ????????????????????????e1.printStackTrace();
          ????????????????????}
          ????????????????}
          ????????????}
          ????????});

          ????????builderTree();
          ????????createActions();
          ????????initializeToolBar();
          ????????initializeMenu();
          ????}

          ????
          public?void?builderTree()?{
          ????????TreeItem?item?
          =?new?TreeItem(tree,?SWT.NONE);
          ????????item.setText(
          "導航");
          ????????item.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));

          ????????TreeItem?treeitem1?
          =?new?TreeItem(item,?SWT.NONE);
          ????????treeitem1.setText(
          "模塊一");
          ????????treeitem1.setData(t1.ID);
          ????????treeitem1.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));
          ????????TreeItem?treeitem2?
          =?new?TreeItem(item,?SWT.NONE);
          ????????treeitem2.setText(
          "模塊二");
          ????????treeitem2.setData(t2.ID);
          ????????treeitem2.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));
          ????????TreeItem?treeitem3?
          =?new?TreeItem(item,?SWT.NONE);
          ????????treeitem3.setText(
          "模塊三");
          ????????treeitem3.setData(t3.ID);
          ????????treeitem3.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));
          ????????item.setExpanded(
          true);
          ????}

          ????
          /**
          ?????*?Create?the?actions
          ?????
          */
          ????
          private?void?createActions()?{
          ????????
          //?Create?the?actions
          ????}

          ????
          /**
          ?????*?Initialize?the?toolbar
          ?????
          */
          ????
          private?void?initializeToolBar()?{
          ????????IToolBarManager?toolbarManager?
          =?getViewSite().getActionBars().getToolBarManager();
          ????}

          ????
          /**
          ?????*?Initialize?the?menu
          ?????
          */
          ????
          private?void?initializeMenu()?{
          ????????IMenuManager?menuManager?
          =?getViewSite().getActionBars().getMenuManager();
          ????}

          ????@Override
          ????
          public?void?setFocus()?{
          ????????
          //?Set?the?focus
          ????}

          }

          下面是另外三個VIEW
          package?org.hermit.pojotools.tt;

          import?org.eclipse.jface.action.IMenuManager;
          import?org.eclipse.jface.action.IToolBarManager;
          import?org.eclipse.swt.SWT;
          import?org.eclipse.swt.widgets.Composite;
          import?org.eclipse.swt.widgets.Label;
          import?org.eclipse.ui.part.ViewPart;

          public?class?t1?extends?ViewPart?{

          ????
          public?static?final?String?ID?=?"org.hermit.pojotools.tt.t1";?//$NON-NLS-1$

          ????
          /**
          ?????*?Create?contents?of?the?view?part
          ?????*?
          @param?parent
          ?????
          */
          ????@Override
          ????
          public?void?createPartControl(Composite?parent)?{
          ????????Composite?container?
          =?new?Composite(parent,?SWT.NONE);

          ????????
          final?Label?t1Label?=?new?Label(container,?SWT.NONE);
          ????????t1Label.setText(
          "這是模塊一");
          ????????t1Label.setBounds(
          29,?27,?74,?12);
          ????????
          //
          ????????createActions();
          ????????initializeToolBar();
          ????????initializeMenu();
          ????}

          ????
          /**
          ?????*?Create?the?actions
          ?????
          */
          ????
          private?void?createActions()?{
          ????????
          //?Create?the?actions
          ????}

          ????
          /**
          ?????*?Initialize?the?toolbar
          ?????
          */
          ????
          private?void?initializeToolBar()?{
          ????????IToolBarManager?toolbarManager?
          =?getViewSite().getActionBars().getToolBarManager();
          ????}

          ????
          /**
          ?????*?Initialize?the?menu
          ?????
          */
          ????
          private?void?initializeMenu()?{
          ????????IMenuManager?menuManager?
          =?getViewSite().getActionBars().getMenuManager();
          ????}

          ????@Override
          ????
          public?void?setFocus()?{
          ????????
          //?Set?the?focus
          ????}

          }
          package?org.hermit.pojotools.tt;

          import?org.eclipse.jface.action.IMenuManager;
          import?org.eclipse.jface.action.IToolBarManager;
          import?org.eclipse.swt.SWT;
          import?org.eclipse.swt.widgets.Button;
          import?org.eclipse.swt.widgets.Composite;
          import?org.eclipse.ui.part.ViewPart;

          public?class?t2?extends?ViewPart?{

          ????
          public?static?final?String?ID?=?"org.hermit.pojotools.tt.t2";?//$NON-NLS-1$

          ????
          /**
          ?????*?Create?contents?of?the?view?part
          ?????*?
          @param?parent
          ?????
          */

          ????@Override
          ????
          public?void?createPartControl(Composite?parent)?{
          ????????Composite?container?
          =?new?Composite(parent,?SWT.NONE);

          ????????
          final?Button?button?=?new?Button(container,?SWT.NONE);
          ????????button.setText(
          "這是模塊二");
          ????????button.setBounds(
          10,?10,?72,?22);
          ????????
          //
          ????????createActions();
          ????????initializeToolBar();
          ????????initializeMenu();
          ????}


          ????
          /**
          ?????*?Create?the?actions
          ?????
          */

          ????
          private?void?createActions()?{
          ????????
          //?Create?the?actions
          ????}


          ????
          /**
          ?????*?Initialize?the?toolbar
          ?????
          */

          ????
          private?void?initializeToolBar()?{
          ????????IToolBarManager?toolbarManager?
          =?getViewSite().getActionBars().getToolBarManager();
          ????}


          ????
          /**
          ?????*?Initialize?the?menu
          ?????
          */

          ????
          private?void?initializeMenu()?{
          ????????IMenuManager?menuManager?
          =?getViewSite().getActionBars().getMenuManager();
          ????}


          ????@Override
          ????
          public?void?setFocus()?{
          ????????
          //?Set?the?focus
          ????}


          }

          package?org.hermit.pojotools.tt;

          import?org.eclipse.jface.action.IMenuManager;
          import?org.eclipse.jface.action.IToolBarManager;
          import?org.eclipse.swt.SWT;
          import?org.eclipse.swt.custom.CCombo;
          import?org.eclipse.swt.widgets.Composite;
          import?org.eclipse.ui.part.ViewPart;

          public?class?t3?extends?ViewPart?{

          ????
          private?CCombo?combo;
          ????
          public?static?final?String?ID?=?"org.hermit.pojotools.tt.t3";?//$NON-NLS-1$

          ????
          /**
          ?????*?Create?contents?of?the?view?part
          ?????*?
          @param?parent
          ?????
          */
          ????@Override
          ????
          public?void?createPartControl(Composite?parent)?{
          ????????Composite?container?
          =?new?Composite(parent,?SWT.NONE);

          ????????combo?
          =?new?CCombo(container,?SWT.NONE);
          ????????combo.setText(
          "這是模塊三");
          ????????combo.setBounds(
          42,?25,?84,?17);
          ????????
          //
          ????????createActions();
          ????????initializeToolBar();
          ????????initializeMenu();
          ????}

          ????
          /**
          ?????*?Create?the?actions
          ?????
          */
          ????
          private?void?createActions()?{
          ????????
          //?Create?the?actions
          ????}

          ????
          /**
          ?????*?Initialize?the?toolbar
          ?????
          */
          ????
          private?void?initializeToolBar()?{
          ????????IToolBarManager?toolbarManager?
          =?getViewSite().getActionBars().getToolBarManager();
          ????}

          ????
          /**
          ?????*?Initialize?the?menu
          ?????
          */
          ????
          private?void?initializeMenu()?{
          ????????IMenuManager?menuManager?
          =?getViewSite().getActionBars().getMenuManager();
          ????}

          ????@Override
          ????
          public?void?setFocus()?{
          ????????
          //?Set?the?focus
          ????}

          }
          大功告成!
          posted on 2006-12-22 11:10 交口稱贊 閱讀(4619) 評論(7)  編輯  收藏 所屬分類: Eclipse RCP SWT

          FeedBack:
          # re: 像WEB一樣的樹形導航RCP 2006-12-23 17:25 大灰狼挑燈品書
          這段代碼可以在網頁里生成樹形空間  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP 2006-12-25 09:13 交口稱贊
          不是的,是rcp程序,不是WEB程序  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP[未登錄] 2007-01-26 21:49 test
          多謝多謝多謝  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP 2007-12-04 11:45 流浪
          連類的名字都是小寫字母,你編寫程序幾年了  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP 2007-12-04 14:29 交口稱贊
          這是產品代碼
          簡化出來的
          臨時手工改的
          不是很嚴謹

          主要目的是和大家share一下解決方案,
          不是code review  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP 2011-07-15 10:58 secret_x15
          哥哥 能不能把plugin.xml貼上來 或者發給我 179215133@qq.com 謝謝

          我現在點擊模塊一、模塊二的時候報錯

          org.eclipse.core.runtime.AssertionFailedException: null argument:
          at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
          at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
          at org.eclipse.jface.viewers.AbstractTreeViewer.getTreePathFromItem(AbstractTreeViewer.java:2870)
          at org.eclipse.jface.viewers.AbstractTreeViewer.getSelection(AbstractTreeViewer.java:2893)  回復  更多評論
            
          # re: 像WEB一樣的樹形導航RCP 2011-10-30 00:43 wuhb
          同上 992918069  回復  更多評論
            
          主站蜘蛛池模板: 吉林市| 双辽市| 周口市| 石林| 西乡县| 威信县| 延吉市| 南投县| 兖州市| 紫阳县| 慈利县| 贺兰县| 富裕县| 文成县| 沙洋县| 平江县| 天峨县| 城步| 三江| 垫江县| 修武县| 土默特右旗| 仲巴县| 剑河县| 南川市| 亳州市| 东台市| 华蓥市| 洛宁县| 呼伦贝尔市| 铁力市| 丹江口市| 武鸣县| 色达县| 桦甸市| 西华县| 永宁县| 嘉义县| 七台河市| 天等县| 潞城市|