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

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

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526664
          • 排名 - 92

          最新評論

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

          ?
          模塊三
          點擊不同的樹節(jié)點可以動態(tài)切換右邊的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)?{
          ????}

          }
          樹形導(dǎo)航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才能關(guān)閉老的,否則布局就會亂掉
          ????????????????????????????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(
          "導(dǎo)航");
          ????????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 交口稱贊 閱讀(4617) 評論(7)  編輯  收藏 所屬分類: Eclipse RCP SWT

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

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

          我現(xiàn)在點擊模塊一、模塊二的時候報錯

          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)  回復(fù)  更多評論
            
          # re: 像WEB一樣的樹形導(dǎo)航RCP 2011-10-30 00:43 wuhb
          同上 992918069  回復(fù)  更多評論
            
          主站蜘蛛池模板: 南雄市| 磴口县| 泾川县| 湘潭市| 县级市| 靖宇县| 东平县| 崇义县| 四川省| 盖州市| 涟源市| 云龙县| 康平县| 普定县| 永清县| 松潘县| 治多县| 枣阳市| 客服| 将乐县| 中牟县| 祁东县| 新田县| 仙桃市| 邹平县| 白城市| 比如县| 宜州市| 金溪县| 佛教| 仁怀市| 洞头县| 仲巴县| 宁德市| 民丰县| 临澧县| 合江县| 大荔县| 万全县| 新昌县| 张家界市|