2011-07-21 15 views
0

私はプログラミングで1プリファレンスページ作られている:私はFileFieldEditor fのパスを取得し、このパスは、作業台の上に埋め込まれているボタンに実行したいしたい(ただし、そのボタンのプログラミングは別のプロジェクトである環境設定ページからファイルのパスを取得し、Workbenchのボタンを介して出力をコンソールに出力する方法はありますか?

public class SAML 
extends FieldEditorPreferencePage 
implements IWorkbenchPreferencePage { 

public SAML() { 
    super(GRID); 
    setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore()); 
    setDescription("Browse Appropriate files"); 
} 

public FileFieldEditor f; 
public FileFieldEditor f1; 
public void createFieldEditors() { 
    f=new FileFieldEditor(PreferenceConstants.P_PATH, 
      "&Prism.bat File:", getFieldEditorParent()); 
    addField(f); 

    f1=new FileFieldEditor(PreferenceConstants.P_PATH1, 
      "&NuSMV Application File:", getFieldEditorParent()); 
    addField(f1); 
} 

を同じワークスペース上で)。 ハード「prism.bat」ファイルのパスをコード化されたボタンのプログラミングは次のとおりです。

try { 
     //to clear the console on every click of button 

     IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(IConsoleConstants.ID_CONSOLE_VIEW); 
     if (view != null) { 
      (myConsole).clearConsole(); 
     }   
     ProcessBuilder pb=new ProcessBuilder("C:\\Program Files\\prism-4.0\\bin\\prism.bat"); 
     pb.directory(new File("C:\\Program Files\\prism-4.0\\bin")); 
     Process p=pb.start(); 

     BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 

     String in; 
     while((in = input.readLine()) != null) { 
      out.println(in); 
     } 


     int exitVal=p.waitFor();    

     if(exitVal==0) 
     { 
      out.println("Process Successful"); 
      out.println("Printing on console with Exitvalue =0"); 

     } 
     else 
      {out.println("Process failed"); 
      out.println("Exitvalue = 1"); 
      } 

    } 
     catch (Exception e) 
     { 
      out.println(e.toString()); 
      e.printStackTrace(); 

     } 

しかし、ボタンがあるときになるように、私は私の好みのページFileFieldEditor fからファイルを取得したいと、このパスは、ボタンのプログラミングに埋め込みたいですを押すと、結果が表示されます。

+1

を現在の値を使用するには?あなたは 'FileFieldEditor'を持っています。あなたはハードコードされたパスを持つコードを持っています。ハードコーディングされたパスを' FileFieldEditor'から何かに置き換えたいと思うように聞こえます。したがって、 'FileFieldEditor'への参照を.batファイルへのパスを持つコードに渡すだけで済みます。 – OpenSauce

+0

@BalusC - ありがとうございます:) –

+0

@BalusC - しかし、私は私のボタンのプログラミングでfileFieldEditorにアクセスすることができません。 FileFieldEditorからパスにアクセスしてProcessBuilderへの入力として与える方法を教えてください。 –

答えて

0

次の2つの部品が必要です。デフォルトを設定するには、現在の値

を使っ好み

  • コードのデフォルトを初期化

    • コードを、あなたは、次のコードを使用しますActivator

      public class Activator extends AbstractUIPlugin { 
          @Override 
          public void start(BundleContext context) throws Exception { 
           super.start(context); 
           IPreferenceStore ps = getPreferenceStore(); 
           ps.setDefault(SHOW_IMAGE, true); 
          } 
          public static final String SHOW_IMAGE = "showImage"; 
      } 
      

      また、 org.eclipse.core.runtime.preferences拡張ポイント...

      上記のコードでは、嗜好のタイプがBooleanであることを前提としています。数字、文字列などの他の方法があります。ファイル名は文字列です。

      ...ちょうど

      if (Activator.getDefault().getPreferenceStore().getBoolean(Activator.SHOW_IMAGE)) { 
          … 
      } 
      

      を使用し、次のslidesは少しより多くの情報が含まれている、それはあなたが行うことができないで何

  • +0

    Madesn - ありがとうございます。 –

    +0

    ありがとうございます。しかし、私がアクチベータクラスでこのコードを使用しているときに、自分の設定ページを開くたびに、それが開きませんし、設定ページを作成できないというエラーが表示されます。 さらに、2番目のコードはどこで使うべきですか教えてください。私はボタンのプログラミングでそれを使用する必要がありますか? –

    +0

    環境設定ページの例外を扱うために、より多くのコンテキストが必要です。 2番目のスニペットは 'Button'に使用され、' getBoolean(...) 'ではなく' getString(...) 'を使います。 –

    関連する問題