posts - 1,  comments - 25,  trackbacks - 0

          曾經(jīng)很蠢的自己去寫了一個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);
              }
          }


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

          posted on 2008-05-23 10:52 Daniel 閱讀(697) 評論(0)  編輯  收藏 所屬分類: Eclipse的相關(guān)
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 湘乡市| 上杭县| 巨鹿县| 桓仁| 元江| 湖南省| 马山县| 都匀市| 岱山县| 同心县| 永新县| 灵台县| 宝丰县| 都匀市| 岚皋县| 昔阳县| 西华县| 张家界市| 报价| 乌苏市| 北辰区| 新源县| 师宗县| 白河县| 贵州省| 陇川县| 白朗县| 宁津县| 竹山县| 高邑县| 南部县| 抚州市| 宁城县| 新兴县| 高邮市| 铜川市| 龙海市| 武隆县| 浮山县| 垦利县| 察雅县|