posts - 1,  comments - 25,  trackbacks - 0

          曾經很蠢的自己去寫了一個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的相關
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 临西县| 嵊州市| 锦州市| 安化县| 罗山县| 元朗区| 基隆市| 宁海县| 贺州市| 旬阳县| 曲麻莱县| 漳浦县| 遂平县| 寻乌县| 莱西市| 安溪县| 黔西| 阜新| 西和县| 长宁县| 百色市| 长汀县| 北辰区| 四川省| 清丰县| 吴江市| 嘉黎县| 郎溪县| 海兴县| 新丰县| 科技| 济南市| 和平县| 沁水县| 永康市| 东阿县| 卢氏县| 利川市| 宾阳县| 江津市| 崇州市|