0
用例如下:我們有很多首選項頁面,但根據登錄的用戶,只顯示幾個頁面。我們使用活動綁定意識到:ActivityBinding不適用於偏好頁面
<extension point="org.eclipse.ui.activities">
<activity id="org.acme.user.isAdmin" name="Admin Activity">
<enabledWhen>
<test property="org.acme.user.userName" value="ADMIN" />
</enabledWhen>
</activity>
<activityPatternBinding
activityId="org.acme.user.isAdmin"
isEqualityPattern="true"
pattern="org.acme.project/org.acme.project.MyPreferencePage">
</activityPatternBinding>
</extension>
<extension point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="org.acme.user.UserTester"
id="org.acme.user.UserTester"
namespace="org.acme.user"
properties="userName"
type="java.lang.Object">
</propertyTester>
</extension>
有一對夫婦多,當然。現在,如果我們以其中一個用戶身份登錄,此設置可以正常工作。如果我們退出並重新登錄,顯示的首選項頁面按照以下方式是:
- 如果第一個用戶能夠看到的頁面,它的知名度是正確計算
- 如果第一個用戶是不能看到的頁面,第二個用戶也不
因爲屬性測試儀做自己的工作,一切工作爲第一次登錄,我認爲問題出在首選項對話框是如何創建的頁面。事實上,下面一行將始終打印過的應用程序,過程中同樣數量不管有多少頁面可見:
System.out.println(PlatformUI.getWorkbench().getPreferenceManager().getRootSubNodes().length);
(我得到的,它不下去,因爲有一個緩存頁面,但是當活動綁定突然決定頁面應該可見時,它應該去以上)。
有人可以闡明可能觸發這些問題的原因,以及我們如何解決這些問題? (我們使用Eclipse 3.7)
看起來像從過濾器是從擴展點註冊表(通過PreferencePageRegistryReader)讀取頁面時完成的,但沒有設置響應稍後啓用的活動的任何更改。 –
看起來這可能是(非常古老的)錯誤[65352](https://bugs.eclipse.org/bugs/show_bug.cgi?id=65352) –