2016-09-29 7 views
0

私はEclipseプラグイン(RCPではなく)を開発しており、JfaceとSWTを使用してユーザーインターフェイスを作成しています。実際、ユーザーインターフェイスの開発を容易にするためにWindowBuilderプラグインをダウンロードし、カスタムTitleAreaDialogを作成しました。EclipseプラグインでSWT/JFace TitleAreaDialogの変更が表示されないのはなぜですか?

これまですべてがうまくいって、WindowBuilder(上の画像)に次のTitleAreaDialogが表示され、Eclipseプラグインを実行しようとすると問題が発生します。木と左側の要素が消えit's:

WindowBuilder (top) and Plugin executed (bottom)

誰もが何が起こっているか知っていますか? plugin.xmlまたはMANIFEST.MFに何かを追加する必要がありますか?

ありがとうございます。

EDIT: zipには、plugin.xml、MANIFEST.XML、build.properties、Handler、およびguiという名前のPlugiGUIがあります。ご不明な点がございましたら、私にご相談ください。

ありがとうございます。

You can download the code here.

EDIT 2: MANIFEST.MFコードの一部はTitleAreaDialogコードの次

Bundle-SymbolicName: org.eclipse.plugin.arturito;singleton:=true 
Require-Bundle: org.eclipse.ui, 
org.eclipse.core.runtime 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Bundle-ActivationPolicy: lazy 
Bundle-ClassPath: ., 
swing2swt.jar 

一部は以下である:

/** 
* Create contents of the dialog. 
* @param parent 
*/ 
@Override 
protected Control createDialogArea(Composite parent) { 
    //TITLE AND IMAGE OF TitleDialog 
       ... 

    //Composite   
    Composite area = (Composite) super.createDialogArea(parent); 
    Composite container = new Composite(area, SWT.NONE); 
    container.setLayout(new FillLayout(SWT.HORIZONTAL)); 
    container.setLayoutData(new GridData(GridData.FILL_BOTH)); 

    //Creates the division 
    SashForm sashForm = new SashForm(container, SWT.NONE); 


    //Right division 
    Group rightGroup = new Group(sashForm, SWT.NONE); 
    rightGroup.setLayout(new StackLayout()); 

    //Create the tree 
    Tree tree = new Tree(rightGroup, SWT.BORDER); 
    tree.setLinesVisible(true); 
    tree.setToolTipText(""); 
    tree.setHeaderVisible(true); 

    //Create tree elements 
    TreeItem pluginProperties = new TreeItem(tree, SWT.NONE); 
    pluginProperties.setText("Plugin properties"); 
    pluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoProperties.png")); 


    TreeItem createPluginProperties = new TreeItem(pluginProperties, SWT.NONE); 
    createPluginProperties.setText("Create"); 
    createPluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoPlus.png")); 
    TreeItem editPluginProperties = new TreeItem(pluginProperties, SWT.NONE); 
    editPluginProperties.setText("Edit/Delete"); 
    editPluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoRemoveEdit.png")); 
    pluginProperties.setExpanded(true); 

    //MORE TREE ELEMENTS WITH SAME PATTERN 
    .............. 

    //Left division 
    Group leftGroup = new Group(sashForm, SWT.NONE); 
    leftGroup.setLayout(new StackLayout()); 

    Composite projectConfigDescriptor = new Composite(leftGroup, SWT.NONE); 

    //Proportion of sashForm 
    sashForm.setWeights(new int[] {220, 469}); 
    return area; 
} 

なぜWindowBuilderが行います私が望むようにTitleDialogを表示し、私のプラグインは表示されませんか?

+1

コードを表示する必要があります。 –

+0

コードが追加されました。 Run Configurationsと同じようにTitleAreaDialogを作成する必要がありますが、わかるように何が動作していないのか分かりません。 – Jaime

+0

コードが問題になっている必要があります。スタックオーバーフローに関する質問は、リンクされたコードがある時点で削除されても問題が無用になると、他の人やあなたを助けることを目的としています。私たちに[mcve](少なくともTitleAreaDialogの)を表示してください。 –

答えて

0

左右のグループのレイアウトがStackLayoutに設定されています。このレイアウトでは、どのコントロールが現在表示する最も上位のコントロールかを指定する必要があります。だから、どうなる:

StackLayout layout = new StackLayout(); 
rightGroup.setLayout(layout); 

... create Tree 

layout.topControl = tree; 

をしかし、それはあなたが唯一のそれぞれの側に1つのトップレベルコントロールを作成しているとしてStackLayoutを使用する理由はない立っているよう。だからFillLayout

rightGroup.setLayout(new FillLayout()); 
+0

それは働いた!どうもありがとうございました! – Jaime

関連する問題