use of com.sun.star.text.XTextViewCursorSupplier in project languagetool by languagetool-org.
the class Main method getLanguage.
/**
* Checks the language under the cursor. Used for opening the configuration dialog.
* @return the language under the visible cursor
*/
@Nullable
private Language getLanguage() {
XComponent xComponent = getXComponent();
Locale charLocale;
XPropertySet xCursorProps;
try {
XModel model = UnoRuntime.queryInterface(XModel.class, xComponent);
XTextViewCursorSupplier xViewCursorSupplier = UnoRuntime.queryInterface(XTextViewCursorSupplier.class, model.getCurrentController());
XTextViewCursor xCursor = xViewCursorSupplier.getViewCursor();
if (xCursor.isCollapsed()) {
// no text selection
xCursorProps = UnoRuntime.queryInterface(XPropertySet.class, xCursor);
} else {
// text is selected, need to create another cursor
// as multiple languages can occur here - we care only
// about character under the cursor, which might be wrong
// but it applies only to the checking dialog to be removed
xCursorProps = UnoRuntime.queryInterface(XPropertySet.class, xCursor.getText().createTextCursorByRange(xCursor.getStart()));
}
// Thus we check the text itself:
if (new KhmerDetector().isThisLanguage(xCursor.getText().getString())) {
return Languages.getLanguageForShortCode("km");
}
if (new TamilDetector().isThisLanguage(xCursor.getText().getString())) {
return Languages.getLanguageForShortCode("ta");
}
Object obj = xCursorProps.getPropertyValue("CharLocale");
if (obj == null) {
return Languages.getLanguageForShortCode("en-US");
}
charLocale = (Locale) obj;
boolean langIsSupported = false;
for (Language element : Languages.get()) {
if (charLocale.Language.equalsIgnoreCase(LIBREOFFICE_SPECIAL_LANGUAGE_TAG) && element.getShortCodeWithCountryAndVariant().equalsIgnoreCase(charLocale.Variant)) {
langIsSupported = true;
break;
}
if (element.getShortCode().equals(charLocale.Language)) {
langIsSupported = true;
break;
}
}
if (!langIsSupported) {
String message = Tools.i18n(MESSAGES, "language_not_supported", charLocale.Language);
JOptionPane.showMessageDialog(null, message);
return null;
}
} catch (Throwable t) {
showError(t);
return null;
}
return getLanguage(charLocale);
}
use of com.sun.star.text.XTextViewCursorSupplier in project jabref by JabRef.
the class OOBibBase method getSortedReferenceMarks.
private List<String> getSortedReferenceMarks(final XNameAccess nameAccess) throws WrappedTargetException, NoSuchElementException {
XTextViewCursorSupplier cursorSupplier = UnoRuntime.queryInterface(XTextViewCursorSupplier.class, mxDoc.getCurrentController());
XTextViewCursor viewCursor = cursorSupplier.getViewCursor();
XTextRange initialPos = viewCursor.getStart();
List<String> names = Arrays.asList(nameAccess.getElementNames());
List<Point> positions = new ArrayList<>(names.size());
for (String name : names) {
XTextContent textContent = UnoRuntime.queryInterface(XTextContent.class, nameAccess.getByName(name));
XTextRange range = textContent.getAnchor();
// Check if we are inside a footnote:
if (UnoRuntime.queryInterface(XFootnote.class, range.getText()) != null) {
// Find the linking footnote marker:
XFootnote footer = UnoRuntime.queryInterface(XFootnote.class, range.getText());
// The footnote's anchor gives the correct position in the text:
range = footer.getAnchor();
}
positions.add(findPosition(viewCursor, range));
}
Set<ComparableMark> set = new TreeSet<>();
for (int i = 0; i < positions.size(); i++) {
set.add(new ComparableMark(names.get(i), positions.get(i)));
}
List<String> result = new ArrayList<>(set.size());
for (ComparableMark mark : set) {
result.add(mark.getName());
}
viewCursor.gotoRange(initialPos, false);
return result;
}
Aggregations