posts - 1,  comments - 25,  trackbacks - 0

          曾經(jīng)很蠢的自己去寫了一個(gè)Dialog去包裝preference View.
          代碼如下 在TS1方法下:

          package com.wipro.testtools.ui.internal.action;

          import java.util.Iterator;

          import org.eclipse.ui.IPerspectiveDescriptor;
          import org.eclipse.ui.IWorkbench;
          import org.eclipse.ui.IWorkbenchWindow;
          import org.eclipse.ui.IWorkbenchWindowActionDelegate;
          import org.eclipse.ui.WorkbenchException;
          import org.eclipse.ui.internal.OpenPreferencesAction;
          import org.eclipse.ui.internal.Workbench;
          import org.eclipse.ui.internal.WorkbenchPlugin;
          import org.eclipse.ui.internal.actions.OpenPerspectiveDialogAction;
          import org.eclipse.ui.internal.dialogs.SelectPerspectiveDialog;
          import org.eclipse.ui.dialogs.PreferencesUtil;
          import org.eclipse.ui.help.WorkbenchHelp;
          import org.eclipse.core.runtime.IAdaptable;
          import org.eclipse.jface.action.IAction;
          import org.eclipse.jface.viewers.ISelection;
          import org.eclipse.jface.window.Window;
          import org.eclipse.jface.dialogs.TitleAreaDialog;
          import org.eclipse.jface.preference.IPreferenceNode;
          import org.eclipse.jface.preference.PreferenceManager;
          import org.eclipse.jface.preference.IPreferencePage;
          import org.eclipse.jface.preference.PreferenceDialog;
          import org.eclipse.swt.widgets.Shell;

          public class OpenPreferencePages implements IWorkbenchWindowActionDelegate {
              public OpenPreferencePages() {
                  super();
              }

              private IWorkbenchWindow workbenchWindow;

              public void dispose() {
              }

              public void init(IWorkbenchWindow window) {
                  workbenchWindow = window;
              }

              public void run(IAction action) {

                  ts2();
              }

              private void ts2() {
                  // OpenPreferencesAction action = new OpenPreferencesAction();
                  // OpenPerspectiveDialogAction action = new
                  // OpenPerspectiveDialogAction(null);
                  // action.run();
                  String ourPreferenceDialog = "com.wipro.testtools.ui.preferences.SamplePreferencePage";
                  PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, ourPreferenceDialog, new String[]{ourPreferenceDialog}, null);
                 
                  dialog.open();

              }

              /**
               *
               */
              private void ts1() {
                  String PreferenceNodeId = "org.eclipse.ui.preferencePages.Workbench";
                  PreferenceDialogWrapper dialog = null;
                  PreferenceManager manager = WorkbenchPlugin.getDefault()
                          .getPreferenceManager();
                  if (manager != null) {
                      dialog = new PreferenceDialogWrapper(getShell(), manager);
                      dialog.create();
                      // WorkbenchHelp.setHelp(dialog.getShell(),
                      // IHelpContextIds.PREFERENCE_DIALOG);

                      for (Iterator iterator = manager.getElements(
                              PreferenceManager.PRE_ORDER).iterator(); iterator.hasNext();) {
                          IPreferenceNode node = (IPreferenceNode) iterator.next();
                          System.out.println(node.getId());
                          if (node.getId().equals(PreferenceNodeId)) {
                              dialog.showPage(node);
                          }
                      }
                      dialog.open();
                  }
              }

              public void selectionChanged(IAction action, ISelection selection) {
              }

              private Shell getShell() {
                  return DialogCheck.getShell();
              }

          }

          class PreferenceDialogWrapper extends PreferenceDialog {
              public PreferenceDialogWrapper(Shell parentShell, PreferenceManager manager) {
                  super(parentShell, manager);
                  super.setSelectedNodePreference("PreferenceNodeId");// this is added
              }

              public boolean showPage(IPreferenceNode node) {
                  return super.showPage(node);
              }

              public IPreferencePage getPage(IPreferenceNode node) {
                  if (node == null)
                      return null;

                  if (node.getPage() == null)
                      node.createPage();

                  if (node.getPage() == null)
                      return null;

                  return node.getPage();
              }
          }

          class DialogCheck {
              private DialogCheck() {
              }

              private static VerifyDialog _verifyDialog;

              public static Shell getShell() {
                  Shell shell = WorkbenchPlugin.getDefault().getWorkbench()
                          .getActiveWorkbenchWindow().getShell();
                  _verifyDialog = new VerifyDialog(shell);
                  _verifyDialog.create();
                  return _verifyDialog.getShell();
              }

          }

          class VerifyDialog extends TitleAreaDialog {
              public VerifyDialog(Shell parent) {
                  super(parent);
              }
          }


          其實(shí)eclipse提供了這樣的API: See the TS2 Method:
          Just two line codes. :(

          posted on 2008-05-23 10:52 Daniel 閱讀(694) 評(píng)論(0)  編輯  收藏 所屬分類: Eclipse的相關(guān)
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          主站蜘蛛池模板: 双桥区| 双江| 自治县| 南漳县| 陆河县| 凤凰县| 兴安盟| 星子县| 贵港市| 巴林左旗| 五指山市| 迁安市| 大渡口区| 平塘县| 泸西县| 宾阳县| 英德市| 乌苏市| 盈江县| 东源县| 福州市| 东乌珠穆沁旗| 宜城市| 宿松县| 垣曲县| 九龙城区| 商洛市| 亚东县| 张家港市| 乌苏市| 邛崃市| 政和县| 西乡县| 泉州市| 中卫市| 绍兴市| 孝感市| 铜梁县| 读书| 勃利县| 山东省|