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 閱讀(694) 評論(0)  編輯  收藏 所屬分類: Eclipse的相關
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 新邵县| 荣昌县| 申扎县| 九台市| 江阴市| 长岛县| 兰坪| 永福县| 蓝田县| 额敏县| 天镇县| 金坛市| 根河市| 江华| 麻栗坡县| 古蔺县| 宁乡县| 南充市| 禹城市| 勃利县| 博客| 道孚县| 慈溪市| 遵化市| 山阳县| 竹山县| 定州市| 云南省| 蓬安县| 彰化县| 南丹县| 石景山区| 汉阴县| 佛学| 牙克石市| 高州市| 阳春市| 澄迈县| 治县。| 南雄市| 株洲县|