2009-06-18 30 views
5

Bây giờ tôi có thể đăng ký trợ giúp theo ngữ cảnh trong Eclipse WizardDialog/Editor.Trợ giúp theo ngữ cảnh Eclipse

1) Tôi đã tạo tệp help_contexts.xml.

<?xml version="1.0" encoding="UTF-8"?> 
<?NLS TYPE="org.eclipse.help.contexts"?> 
<contexts> 
    <context id="my.plugin.help.general" > 
     <description>test</description> 
     <topic label="test" href="http://domain.com/help.html"/> 
    </context> 
</contexts> 

2) Tôi tham chiếu tập tin này trong plugin.xml tôi

<extension 
     point="org.eclipse.help.contexts"> 
     <contexts file="help_contexts.xml" plugin="my.plugin.MainEditor"> 
     </contexts> 
    </extension> 

3) Tôi đã thêm một dòng trong build.properties tôi để bao gồm tập tin này trong thư mục bin (bin.includes = help_contexts .xml, ...)

4) Khi chạy plugin dựa trên GEF, tôi thấy "Không tìm thấy kết quả phù hợp cho" my.plugin.MainEditor "" dưới trợ giúp động.

Tôi biết tôi cần phải tạo ra một cái gì đó giống như một nơi nào đó, nhưng tôi không biết được nơi để thiết lập này lên cho WizardDialog tôi hoặc ít nhất là cho toàn bộ biên tập của tôi:

public void createPartControl(Composite parent) { 
     ... 
     PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, 
     "my.plugin.help.general"); 
    } 

Lưu ý: Câu hỏi này ban đầu chứa hai câu hỏi. Tôi đã xóa phần đầu tiên (phần chưa được trả lời) được đăng ở nơi khác.

+0

Lưu ý để tự: 1) Sử dụng một ID theo ngữ cảnh trong đó bao gồm các giai đoạn là một công thức cho thảm họa. my.plugin.help.general không hoạt động. bạn phải sử dụng my.plugin.help_general khi tham khảo help_general. 2) Không được chỉ định tên plugin trong tệp help_contexsts.xml. Sử dụng help_general. –

+0

@ Jason: nếu bạn đã trả lời (một phần) câu hỏi của bạn, bạn có thể đăng câu trả lời thực tế (và thậm chí chọn bài đăng của riêng bạn làm câu trả lời chính thức - không có sự tham gia trong trường hợp này) – VonC

+0

@VonC đã trả lời và tạo Câu hỏi ban đầu của tôi trực tiếp hơn ở đây http://stackoverflow.com/questions/1021719/eclipse-gef-editpart-contextual-help –

Trả lời

10

Đây là cách bạn thực hiện: 1) Tôi đã tạo tệp help_contexts.xml. Không có dấu chấm trong id ngữ cảnh. Không bao gồm tên plugin của bạn trong đó.

<?xml version="1.0" encoding="UTF-8"?> 
<?NLS TYPE="org.eclipse.help.contexts"?> 
<contexts> 
    <context id="help_general" > 
     <description>test</description> 
     <topic label="test" href="http://domain.com/help.html"/> 
    </context> 
</contexts> 

2) Tôi đã tham chiếu tệp này trong plugin.xml của tôi. Không bao gồm plugin-id nếu bạn tham chiếu plugin của riêng bạn.

<extension 
     point="org.eclipse.help.contexts"> 
     <contexts file="help_contexts.xml"> 
     </contexts> 
    </extension> 

3) Tôi đã thêm một dòng trong build.properties tôi để bao gồm tập tin này trong thư mục bin (bin.includes = help_contexts.xml, ...). Lưu ý Bundle-SymbolicName của bạn trong Manifest.MF (cũng hiển thị trong trình soạn thảo plugin.xml của bạn). Ví dụ: my.plugin

4) Thiết lập id ngữ cảnh trong WizardPage (tín dụng đi vào @VonC)

public class MyWizardPage extends WizardPage 
    public void createControl(Composite parent) { 
     PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, "my.plugin.help_general"); 
    } 
} 
+0

Phản hồi tuyệt vời (+1). Cảm ơn bạn :) – VonC

3

Đối với câu hỏi chính, tôi không chắc về tham số thứ hai setHelp của bạn. Xem this thread:

Trong lời gọi phương thức

PlatformUI.getWorkbench().getHelpSystem().setHelp() 

tham số thứ hai là contextID.
Cần có tiền tố là pluginID như: "pluginID.contextID".
Bây giờ tôi không chắc chắn nơi tìm ID trình cắm thêm cho trình cắm của tôi.
Vì vậy, tôi đã sử dụng giá trị của thuộc tính này: Bundle-NameBundle-Symbolic-Name từ MANIFEST.MF làm ID trình cắm.
Bây giờ nó hoạt động.


Đối với sidenote (trợ giúp cho WizardDialog), this thread có thể giúp (từ David Kyle và blog của mình "Eclipse RCP"):

Chúng tôi thiết lập id bối cảnh trong trang wizard của chúng tôi.

public class MyWizardPage extends WizardPage 
    public void createControl(Composite parent) { 
     PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, 
MyPluginActivator.ID + ".mycontexthelpid"); 
    } 
} 

và chúng tôi thiết lập trợ giúp cho hộp thoại wizard.

WizardDialog dialog = new WizardDialog(.....); 
PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), 
"mycontexthelp.id"); 

Chúng tôi không ghi đè performHelp().

Đối với id ngữ cảnh trợ giúp. Xác định tệp xml ngữ cảnh trong plugin của bạn.

<?xml version="1.0" encoding="UTF-8"?> 
<?NLS TYPE="org.eclipse.help.contexts"?> 
<contexts> 
    <context id="mycontexthelpid" > 
     <description>My wizard help.</description> 
     <topic label="Wizard help" href="reference/wizard/help.xhtml"/> 
    </context> 
</contexts> 

trong plugin của bạn

<plugin> 
    <extension point="org.eclipse.help.contexts"> 
     <contexts file="mywizard.xml" plugin="com.mypluginid"/> 
    </extension> 
</plugin> 

Một vấn đề thường gặp là rối tung lên các plugin và giúp đỡ bối cảnh id. Bạn có thể đặt một vài điểm ngắt để xem id ngữ cảnh nào đang được yêu cầu.

+0

Đối với phần đầu tiên, tôi đã nhập một chuỗi không có thật trong đó một cách tình cờ, nhưng tôi vẫn không chắc chắn làm thế nào để áp dụng điều này cho GEF EditParts. Đối với phần thứ hai, khóa đã thêm tham chiếu trong WizardPage. Cảm ơn! –

+0

Lưu ý: Bạn muốn sử dụng Bundle-SymbolicName chứ không phải Bundle-Name. –

+0

@ Jason: cảm ơn bạn đã phản hồi. Tôi đã cập nhật câu trả lời của mình cho phù hợp – VonC

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