2010-04-22 34 views
5

Tôi có hai plugin, ví dụ: com.site.plugin.core và com.site.plugin.ui.
Tôi muốn tách phần cốt lõi khỏi phần giao diện người dùng, do đó, tại plugin com.site.plugin.ui Tôi đã tạo trang Tùy chọn nơi tôi đã xác định một số tùy chọn, nên được com.site.plugin.core sử dụng. Tôi kiểm tra bài viết tại Eclipse site, nhưng nó là khá lỗi thời, và lỗi liên kết cũng không cung cấp nhiều thông tin.
Vì vậy, có thể thực hiện điều này bằng cách sử dụng cơ chế Eclipse chuẩn, hoặc tôi cần sử dụng API cấp thấp trực tiếp thông qua gói org.eclipse.core.runtime.preferences?Làm cách nào để hai plugin eclipse sử dụng cùng một cửa hàng tùy chọn?

Trả lời

5

Tôi tin rằng giao diện người dùng phụ thuộc vào Core chứ không phải khác. Trong trường hợp này, bạn có thể sử dụng cửa hàng tùy chọn của Core trong trang tùy chọn của plugin UI, như sau:

IPreferenceStore store = CorePluginActivator.getDefault().getPreferenceStore(); 
setPreferenceStore(store); 

Bằng cách này, trang ưu tiên sẽ lưu trữ các giá trị trong plugin cốt lõi. Plugin Core có thể sử dụng các giá trị mà không phụ thuộc vào plugin UI.

1

Tìm thấy các cửa hàng prefs cho mỗi plugin. Đây là một cách để có được một cửa hàng prefs cho plugin có lớp trình kích hoạt là ActivatorA.

IPreferenceStore store = ActivatorA.getDefault().getPreferenceStore(); 

Nếu bạn muốn plugin khác để tham khảo các cửa hàng tương tự, có lẽ bạn có thể phơi bày một số api trên ActivatorA cho nó để đạt được điều đó, ví dụ

public IPreferenceStore getSharedPrefs() { 
    return ActivatorA.getDefault().getPreferenceStore(); 
} 

Plugin thứ hai sẽ tìm thấy các cửa hàng chia sẻ bằng cách làm này

IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs(); 

Chúc may mắn.

+0

Hmmm ... Nhưng trong trường hợp này Plugin lõi của tôi nên biết về phần giao diện người dùng. Nó không tốt. –

+0

OK. Nói chung, điều gì sẽ là một cách chấp nhận được cho trình cắm thêm lõi để định vị dữ liệu được chia sẻ, nếu không thông qua plugin tạo ra nó. Làm thế nào về: một filepath ?, Dialog-cài đặt? một URL? – bwinspur

2

Bạn cũng có thể truy cập vào các ưu đãi về các plug-in khác sử dụng dịch vụ ưu tiên:

String pref = Platform.getPreferencesService().getString(
    "org.myplugin.preferences.page", "pref name", 
    "default value if pref not found", null); 
+0

Lưu ý rằng đối với tôi, 'org.myplugin.preferences.page' không hoạt động, tôi phải sử dụng 'org.myplugin.id'. –

+0

Đối với tôi đó cũng là ID, nhờ gợi ý. Như thế này, đây là giải pháp hoàn hảo cho tôi :) – Matthias

Các vấn đề liên quan