propertiesFile= NLSHintHelper.getResourceBundle(typeBinding.getJavaElement().getJavaProject(), typeBinding);
propertiesFile= NLSHintHelper.getResourceBundle(typeBinding.getJavaElement().getJavaProject(), fAccessorClassReference);
	public void open() {		IStorage propertiesFile= null;		try {			ITypeBinding typeBinding= fAccessorClassReference.getBinding();			propertiesFile= NLSHintHelper.getResourceBundle(typeBinding.getJavaElement().getJavaProject(), typeBinding);		} catch (JavaModelException e) {			// Don't open the file		}		if (propertiesFile == null) {			showErrorInStatusLine(fEditor, JavaEditorMessages.getString("Editor.OpenPropertiesFile.error.fileNotFound.dialogMessage")); //$NON-NLS-1$			return;		}				IEditorPart editor;		try {			editor= EditorUtility.openInEditor(propertiesFile, true);		} catch (PartInitException e) {			handleOpenPropertiesFileFailed(propertiesFile);			return;		} catch (JavaModelException e) {			handleOpenPropertiesFileFailed(propertiesFile);			return;		}				// Reveal the key in the properties file		if (editor instanceof ITextEditor) {			IRegion region= null;			boolean found= false;						// Find key in document			IDocument document= JavaPlugin.getDefault().getPropertiesFileDocumentProvider().getDocument(editor.getEditorInput());			if (document != null) {				FindReplaceDocumentAdapter finder= new FindReplaceDocumentAdapter(document);				PropertyKeyHyperlinkDetector detector= new PropertyKeyHyperlinkDetector((ITextEditor)editor);				int offset= document.getLength() - 1;				String keyName= fKeyStringLiteral.getLiteralValue();				try {					while (!found && offset >= 0) {						region= finder.find(offset, keyName, false, true, false, false);						if (region == null)							offset= -1;						else {							// test whether it's the key							IHyperlink[] hyperlinks= detector.detectHyperlinks(null, region, false);							if (hyperlinks != null) {								for (int i= 0; i < hyperlinks.length; i++) {									IRegion hyperlinkRegion= hyperlinks[i].getHyperlinkRegion();									found= keyName.equals(document.get(hyperlinkRegion.getOffset(), hyperlinkRegion.getLength()));								}							} else if (document instanceof IDocumentExtension3) {								// Fall back: test partition								ITypedRegion partition= null;								partition= ((IDocumentExtension3)document).getPartition(IPropertiesFilePartitions.PROPERTIES_FILE_PARTITIONING, region.getOffset(), false);								found= IDocument.DEFAULT_CONTENT_TYPE.equals(partition.getType())										&& keyName.equals(document.get(partition.getOffset(), partition.getLength()).trim()); 							}							// Prevent endless loop (panic code, shouldn't be needed)							if (offset == region.getOffset())								offset= -1;							else								offset= region.getOffset();						}					}				} catch (BadLocationException ex) {					found= false;				} catch (BadPartitioningException e1) {					found= false;				}			}			if (found)				EditorUtility.revealInEditor(editor, region);			else {				EditorUtility.revealInEditor(editor, 0, 0);				showErrorInStatusLine(editor, JavaEditorMessages.getFormattedString("Editor.OpenPropertiesFile.error.keyNotFound", fKeyStringLiteral.getLiteralValue())); //$NON-NLS-1$			}		}	}