Grupy dyskusyjne Google nie obsługują już nowych postów ani subskrypcji z Usenetu. Treści historyczne nadal będą dostępne.

Spellchecker do edytora - Eclipse RCP

0 wyświetleń
Przejdź do pierwszej nieodczytanej wiadomości

yaa...@gmail.com

nieprzeczytany,
23 sie 2007, 05:19:5723.08.2007
do
Tworze aplikacje na podstawie Eclipse RCP. Jednym z modulow tej
aplikacji jest edytor, w ktorym otwiera i modyfikuje sie pliki
tekstowe. I teraz chcialbym dodac do tego edytora spellchecker, na
razie dla jezyka polskiego (ale z mozliwoscia rozszerzenia na inne
jezyki) na takiej zasadzie jak jest to w wordzie. Czyli podkreslane
bledne slowo i po kilknieciu na nie prawym przyciskiem rozwijane menu
z podpowiedziami.
Czy ktos moze wie czy taki spellchecker jest dostepny w opensourcie ??
Jak mozna go zintegrowac z Eclipsem?? Moze ktos kiedys juz mial
podobny problem ??

Jacek

nieprzeczytany,
23 sie 2007, 06:13:0723.08.2007
do


Cześć, od Eclipse 3.3 spellchecking powinien być we wszystkich edytorach
tekstowych. Co więcej, standardowo jak uruchamiasz Eclipse, opcja ta
jest włączona i dostarczany jest słownik angielski.
W starszych wersjach, spellchecking był dostępny tylko w edytorze javy,
oraz był domyślnie wyłączony.
Inicjalizacja spellcheckingu jest w klasie
org.eclipse.ui.editors.text.TextSourceViewerConfiguration, w metodach:
org.eclipse.ui.editors.text.TextSourceViewerConfiguration.getReconciler(ISourceViewer)
oraz
org.eclipse.ui.editors.text.TextSourceViewerConfiguration.getQuickAssistAssistant(ISourceViewer)
(obie od wersji 3.3)

Swoją drogą od 3.3 w Eclipse pisowania jest sprawdzana w
najprzeróżniejszych miejscach, gdzie jest wykorzystywany TextViewer, jak
np. w ticketach Mylyn, czy komentarzach commitów do CVS. Może i w Twoim
RCP warto dodać taką funkcjonalność.

Możesz także także zobaczyć np. tego buga:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=155280
Są tam patche z kodem włączającym spellchecking w jednym z pól
tekstowych - dobre żeby zacząć.

Co do słownika, to musiałbyś zobaczyć jak są skonstruowane te słowniki
angielskie w Eclipse i przygotować polski odpowiednik.

yaa...@gmail.com

nieprzeczytany,
23 sie 2007, 09:55:5723.08.2007
do
Super dzieki Jacek!! Mam jakis punkt zaczepienia :) .
Jeszcze jedno pytanie. Czy takie slowniki w jezyku polskim sa dostepne
w sieci za free ??
Bo rozumiem ze po sciagnieciu takiego slownika nalezaloby go
przekonwertowac do formatu eclipsowego slownika.
Skad mozna sciagnac taki slownik w jezyku polski??

Pozdr
Jarek

Jacek

nieprzeczytany,
23 sie 2007, 11:30:4323.08.2007
do

są słowniki polskie np. dla skrablistów, słownik do firefoxa, albo do
OpenOffice.
Wszystkie chyba nawet bazują na tym samym zestawie słów.

Właśnie widzę że słowniki są w org.eclipse.jdt.ui. W podkatalogu
dictionaries, pliki mają format słowo na wiersz - więc typowy, jest też
licencja ispell.

Pozostaje tylko zarejestrować własny słownik :)

Marx

nieprzeczytany,
24 sie 2007, 03:10:0624.08.2007
do
Jacek pisze:

> Pozostaje tylko zarejestrować własny słownik :)
Mysle ze wiecej osob byloby zainteresowanych takim slownikiem
Wartoby go upublicznic, skoro i tak jest darmowy
Marx

Jacek

nieprzeczytany,
27 sie 2007, 09:54:0527.08.2007
do

Cześć,
okazuje się że nie tak łatwo podpiąć zewnętrzny słownik do zestawu
standardowych angielskich GB i US. Tutaj są szczegóły na ten temat:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=201085

Puki co można co najwyżej korzystać z opcji User dictionary w Window ->
Preferences.

Dla developerów RCP rozwiązaniem może być napisanie własnej klasy
SearchEngine (analogicznej do tej z jdt.ui) i w niej ładowanie własnego
słownika.


yaa...@gmail.com

nieprzeczytany,
28 sie 2007, 05:00:4528.08.2007
do
On 27 Sie, 15:54, Jacek <jac...@siat.pl> wrote:
> Marx wrote:
> > Jacek pisze:
> >> Pozostaje tylko zarejestrowa w asny s ownik :)

> > Mysle ze wiecej osob byloby zainteresowanych takim slownikiem
> > Wartoby go upublicznic, skoro i tak jest darmowy
> > Marx
>
> Cze ,
> okazuje si e nie tak atwo podpi zewn trzny s ownik do zestawu
> standardowych angielskich GB i US. Tutaj s szczegó y na ten temat:https://bugs.eclipse.org/bugs/show_bug.cgi?id=201085
>
> Puki co mo na co najwy ej korzysta z opcji User dictionary w Window ->
> Preferences.
>
> Dla developerów RCP rozwi zaniem mo e by napisanie w asnej klasy
> SearchEngine (analogicznej do tej z jdt.ui) i w niej adowanie w asnego
> s ownika.

Witam!!

Jacek czy moglbys mi podac jakies linki do dokumentacji ew. jakies
tutoriale w jakis sposob moglbym przepisac tak klase SearchEngine tak
zebym mogl dodawac dowolny slownik ?? Jestem poczatkujacym programista
w sferze Eclipse RCP i kazda pomoc sie przyda :).
Czy ten spellchecker z Eclipse 3.3 dziala tak jak np. w Wordzie ?? To
znaczy czy po zazanczeniu blednego slowa mozna kliknac na nie prawym
klawiszem myszy i pokaza sie podpowiedzi ?? I czy jest mozliwe dodanie
slow kluczowych ktore nie beda brane pod uwage przy sprawdzaniu
pisowni ??

Pozdrawiam
Jarek

yaa...@gmail.com

nieprzeczytany,
28 sie 2007, 06:32:4428.08.2007
do
I jeszcze jedno pytanie. Czy ten spellchecker jest dostepny dla
wszystkich edytorow dopiero od 3.3 czy jest wlaczony domyslnie od
wersji 3.3.
W linku ktory podales wyzej: https://bugs.eclipse.org/bugs/show_bug.cgi?id=155280
w komentarzu #14 jest mowa o tym ze spellchecking jest dostepny dla
wszystkich edytorow tekstowych od wersji 3.2 tylko ze nie ma
slownikow.
Wiec teoretycznie tworzac swoja klase SearchEngine moglbym dodac
slownik i uaktywnic spelling dla mojego edytora ??
Tylko jak to mozna zrobic ?? Przez dodadnie extension ?? Bo widzialem
takie rozszerzenie :
org.eclipse.ui.workbench.texteditor.spellingEngine pod ktore mozna by
podpiac ten przerobiony SearchEngine. Tylko czy to bedzie dzialac ??


Jacek

nieprzeczytany,
28 sie 2007, 08:22:2628.08.2007
do

hej,
jest tak jak mówisz, tzn. mechanizm sprawdzania pisowni istniał już
przed 3.3, ale dopiero w 3.3 dodano domyślnie słowniki i dopiero wtedy
też zmodyfikowano standardowy edytor tekstowy
(AbstractDecoratedTextEditor) by obsługiwał spellchecking.

Podobnie z searchEnginem, najwygodniej zrobić nowy i zarejestrować go w
punkcie rozszerzeń org.eclipse.ui.workbench.texteditor.spellingEngine

Napewno będzie działać - niżej przykładowy spellingEngine zamieniający
słowa na "kur", na "XXX" :)

Lepiej jednak wzorować się na słowniku z org.eclipse.jdt.ui, który
znajduje się w pakietach:
org.eclipse.jdt.internal.ui.text.spelling i
org.eclipse.jdt.internal.ui.text.spelling.engine

Najlepiej zacząć od
org.eclipse.jdt.internal.ui.text.spelling.DefaultSpellingEngine

Możesz albo skopiować część klas, albo wybrać tylko co ciekawsze
elementy, bo tamten mechanizm jest dosyć rozbudowany - ma różne silniki
dla różnych typów tekstów, języków, preferencje, itp.


import java.util.StringTokenizer;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.ui.texteditor.spelling.ISpellingEngine;
import org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector;
import org.eclipse.ui.texteditor.spelling.SpellingContext;
import org.eclipse.ui.texteditor.spelling.SpellingProblem;

public class SpellingEngine implements ISpellingEngine {

private class ExampleSpellingProblem extends SpellingProblem {

private int offset;
private int length;
private String message;
private String fix;

public ExampleSpellingProblem(int offset, int length, String message,
String fix) {
this.offset = offset;
this.length = length;
this.message = message;
this.fix = fix;
}

@Override
public int getLength() {
return length;
}

@Override
public String getMessage() {
return message;
}

@Override
public int getOffset() {
return offset;
}

@Override
public ICompletionProposal[] getProposals() {
return new ICompletionProposal[] { new CompletionProposal(fix,
offset, length, fix.length()) };
}
}

public SpellingEngine() {
// TODO Auto-generated constructor stub
}

@Override
public void check(IDocument document, IRegion[] regions,
SpellingContext context, ISpellingProblemCollector collector,
IProgressMonitor monitor) {

for (IRegion region : regions) {
int offset = region.getOffset();
try {
StringTokenizer st = new
StringTokenizer(document.get(region.getOffset(), region.getLength()));

while (st.hasMoreElements()) {
String word = (String) st.nextElement();

if (word.startsWith("kur")) {
collector.accept(new ExampleSpellingProblem(offset, word.length(),
"This is Bad!", "XXX"));
}

offset += word.length() + 1;
}

} catch (BadLocationException e) {
// bad location -> ignore region
}
}
}

}

yaa...@gmail.com

nieprzeczytany,
28 sie 2007, 10:04:1028.08.2007
do
A jezeli stworzylbym klase w swoim edytorze ktora dziedziczy po klasie
SpellCheckEngine z pakietu org.eclipse.jdt.internal.ui.text.spelling
(tutaj zrodlo: http://kickjava.com/src/org/eclipse/jdt/internal/ui/text/spelling/SpellCheckEngine.java.htm
) stworzyl w pluginie edytora katalog dictionary i wrzucil tam slownik
polski. Po czym dodalbym rozszerzenie
org.eclipse.ui.workbench.texteditor.spellingEngine do tej nowej klasy.
Czy wtedy nie zalatawiloby to problemu z rejestracja swoich
slownikow ??
Pozostalby problem z dodaniem annotations i QuickFixa do poprawy
bledow jezykowych, ale bylby to jakis krok do przodu.


Jacek

nieprzeczytany,
28 sie 2007, 13:27:0328.08.2007
do

niestety nie możesz dziedziczyć po tym SpellCheckEngine bo ma prywatny
konstruktor, a nawet gdyby Ci się udało, to wszędzie są odwołania do tej
klasy, a nie do Twojej, więc trzeba by się samemu do niej odwoływać = za
dużo roboty.

Ewentualnie możesz w metodzie start w aktywatorze swojego plugina
zarejestrować własny słownik w SpellCheckEngine:

Locale pl = new Locale("pl", "PL");
URL url = ...; // url do slownika
LocaleSensitiveSpellDictionary dictionary = new
LocaleSensitiveSpellDictionary(pl, url);
SpellCheckEngine.getInstance().registerGlobalDictionary(pl, dictionary);


Jeśli natomiast możesz poczekać i akceptujesz pluginy w wersji 3.3.1,
lada dzień wspominany błąd
https://bugs.eclipse.org/bugs/show_bug.cgi?id=201085 powinien zostać
naprawiony i trafić do builda dostępnego z eclipse downloads.
Wtedy będzie można łatwo dodać dowolny słownik tak jak w tym przykładzie:
https://bugs.eclipse.org/bugs/attachment.cgi?id=76905


Inny problem to taki że w każdym z powyższych przypadków musiałbyś w
swoim RCP załączyć plug-in org.eclipse.jdt.ui który jest dosyć ciężki
(bo wymaga jeszcze innych wtyczek) :|
Tego unikniesz tylko tworząc własny spellingEngine.

yaa...@gmail.com

nieprzeczytany,
29 sie 2007, 09:25:2329.08.2007
do
No tak napisanie swojego enginu pewnie byloby najlepszym sposobem, ale
to chyba ponad moje sily :). Wlasnie przegladam od paru godzin zrodla
z pakietu org.eclipse.jdt.internal.ui.text.spelling i jest tego za
duzo do przerabiania :(. Wydaje mi sie ze update do wersji 3.3 i
zarejestrowanie wlasnego slownika poprzez kod ktory mi podales do
wstawienia w aktywator pluginu bedzie najlepszym rozwaiazaniem. Pakiet
org.eclipse.jdt.ui rzeczywiscie jest spory (wraz z wtyczkami od
ktorych zalezy) ale trudno nie mam wyjscia.
Mam jeszcze pytanie czy po zarejestrowaniu slownika bede mial tez
funkcjonalnosc zwiazana z propozycjami poprawy bledu
ortograficznego ??
To znaczy lista slow + dodanie do slownika + zignorowanie itd. Czy to
bede musial sam zaimplementowac ??


Jacek

nieprzeczytany,
29 sie 2007, 09:38:0029.08.2007
do

tak,
jeśli twój edytor tekstowy dzidziczy po AbstractDecoratedTextEditor -
masz to za darmo. Podpowiedzi wyświetlają się tak jak w Eclipse, czyli
na Ctrl+1.

yaa...@gmail.com

nieprzeczytany,
30 sie 2007, 03:18:2830.08.2007
do
Super dzieki :).
A masz moze pomysl na to jak wprowadzic do edytora tekstowego
funkcjonalnosc formatowania tekstu ?? Taka jak sie ma w plikach Javy
po zaznaczeniu tekstu, kliknieciu prawym klawiszem, wybrania Source ->
Format. Chodzi o ladne ukladanie kodu, wciecia, odstepy miedzy liniami
itd.
Jak zwykle w necie materialu na ten temat nie znalazlem. Generalnie
chyba malo jest opisow/tutoriali do Eclipse RCP

Z gory dzieki
Yaros


Jacek

nieprzeczytany,
30 sie 2007, 15:09:0530.08.2007
do

Yaros,
tutoriale do RCP pokazują głównie jak zacząć, tzn. jak od pierwszego
zetknięcia z Eclipsem doprowadzić do prostej aplikacji RCP.

Jeśli szukasz rozwiązania konkretnego problemu, najlepiej szukać
ogólniej w kategoriach pluginów do Eclipse.

Jako szczególnie dobre źródła informacji polecam:

0. zapomniana dokumentacja w menu Help, lub
http://help.eclipse.org/help33/index.jsp a w niej rozdział "Platform
Plug-in Developer Guide"
Jest tam np.
http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/guide/editors.htm
Niestety nie piszą bezpośrednio o formatowaniu. Ale tu jest też
wyszukiwarka, na hasło "formatter" znalazłem m.in. taki link:
http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/text/formatter/package-summary.html

1. http://www.google.pl/search?q=site%3Aeclipse.org - wyszukiwanie
Google tylko w ramach eclipse.org daje rewelacyjne wyniki, bo najwięcej
cennych zasobów prędzej czy później trafia na eclipse.org.
Np. dot. formatowania w edytorze tekstowym:
http://www.google.pl/search?q=site%3Aeclipse.org+text+editor+formatter
(pierwszy wynik jest ciekawy)

2. grupy dyskusyjne news.eclipse.org - w archiwach jest duża szansa
znaleźć odpowiedź na podobne pytania do własnych.
Jeszcze lepiej się zarejestrować i samemu pytać - chętnie odpowiadają
zarówno developerzy Eclipse jak i integratorzy innych RCP. Żeby dostać
hasło:
http://www.eclipse.org/newsgroups/register.php

Na początek szczególnie dobra jest grupa eclipse.newcomer, a dla średnio
zaawansowanego adepta RCP: eclipse.platform oraz eclipse.platform.rcp

3. inne fajne źródło to np. materiały z corocznych EclipseCon.
Tutaj najlepiej wejść na stronę www.eclipsecon.org/ i poprzeglądać
archiwa z ostatnich lat, żeby się zorientować co do treści.
Są świetne pdfy, czasem na bardzo mało udokumentowane tematy, jak np.
rozszerzanie kompilatora, albo pisanie procesorów adnotacji :)
Np. na eclipseCon 2006 był ciekawy artykuł o budowie edytora tekstowego:
www.eclipse.org/eclipse/platform-text/eclipseCon/2006/texteditorrecipes.pdf

Aha, znalazłem jeszcze takie coś:
http://www.realsolve.co.uk/site/tech/jface-text.php
Bardzo interesujący artykuł, m.in. też, jak w edytorze tekstowym zrobić
formatowanie.

Owocnej lektury!

yaa...@gmail.com

nieprzeczytany,
31 sie 2007, 02:37:1531.08.2007
do
Jeszcze raz wielkie dzieki Jacek. Mysle z przy takiej porcji lektury
na pewno znajde cos odpowiedniego :).
A tak z ciekawosci sam tez piszesz aplikacje pod Eclipse RCP ?? Czy
generalnie w Polsce jest to popularna technologia wykorzystywana
w komercyjnych projektach ??

Jeszcze raz wielkie dzieki!!

Pozdrawiam
Yaros


Jacek

nieprzeczytany,
1 wrz 2007, 02:02:291.09.2007
do

Z tego co widzę, RCP bardzo szybko zdobywa popularność, np. w porównaniu
do stycznia, teraz jest więcej Polaków na news.eclipse.org, a także
tutaj jest więcej pytań. Na mojej uczelni (Politechnika Poznańska) też
widać to zainteresowanie, np. w propozycjach firm na tematy
inżynierskie, w konkursach, pytaniach itp.

Także ludzie się przekonują do RCP, no ale też wielu (i tu już nie mówię
tylko o Polsce) decyduje się na nie ze względu na inne projekty, np.
Equinox (dający zupełnie nowe możliwości w zarządzaniu aplikacją).

Jeszcze z aktualności Eclipsowych w Polsce, np. teraz we wrześniu będzie
ciekawa impreza o RCP i kilku innych technologiach Eclipse, które
świetnie współgrają z RCP i ułatwiają pisanie aplikacji. Zobacz sam:
http://www.eclipsesummerschool.com/

yaa...@gmail.com

nieprzeczytany,
3 wrz 2007, 05:27:173.09.2007
do
Ok to wracamy do spellingu :). Zupdatowalem target do wersji 3.3 i
dalej mam problem.
Jak to u mnie wyglada:

- moje edytor dziedziczy po TextEditor, klasa z konfiguracja edytora
dziedziczy po TextSourceViewerConfiguration
- w klasie konfiguracji tak jak napisales na poczatku metody
odpowiedzialne za spelling to getReconciler(ISourceViewer) i
getQuickAssistAssistant(ISourceViewer), mok problem polega na tym ze
mam napisana swoja klase ReconcilingStrategy ktora jest zwracana w
metodie getReconciler(ISourceViewer) tym samym nadpisuje metode z
TextSourceViewerConfiguration ktora jak sie domyslam zwraca klase
IReconciler odpowiedzialna za spelling.

I teraz moje pytania:
- jak moge sie dostac do zrodla metody getReconciler z klasy
TextSourceViewerConfiguration tak zeby dopisac kod odpowiedzialny za
spelling do swojej klasy tworzacej klase IReconciler
- czy musze dodac rozszerzenie ze enginem spellingu do mojego
plugina ?? Bo w tej chwili na strone preferencji mojego edytora w
sekcji spelling jest komunikat "The selecting spelling engine doesn't
exist"
- w jaki sposob potem po podlaczeniu engine moge usunac slowa kluczowe
z tekstu ktory bedzie sprawdzany ??

Sorki ze zadaje tyle pytan ale pogubilem sie totalnie w tym :).
Dzieki za wyrozumialosc

Jacek

nieprzeczytany,
4 wrz 2007, 03:21:444.09.2007
do
yaa...@gmail.com wrote:
[...]

> I teraz moje pytania:
> - jak moge sie dostac do zrodla metody getReconciler z klasy
> TextSourceViewerConfiguration tak zeby dopisac kod odpowiedzialny za
> spelling do swojej klasy tworzacej klase IReconciler

z tego co wcześniej piszesz rozumiem że masz własną klasę dziedziczącą
po TextSourceViewerConfiguration i własną implementację metody
getReconciler() która zwraca Twój własny reconciler nie obsługujący
spellcheckingu. tak?
Reconciler możesz mieć jeden, ale podpiąć do niego wiele strategii -
wtedy osobną strategią mogłaby być twoja bieżąca funkcjonalność
reconcilera, a kolejną strategią - standardowa SpellingReconcileStrategy.
Podobnie robią autorzy JDT - zobacz klasę
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy - jak oni
to zaimplementowali.

> - czy musze dodac rozszerzenie ze enginem spellingu do mojego
> plugina ?? Bo w tej chwili na strone preferencji mojego edytora w
> sekcji spelling jest komunikat "The selecting spelling engine doesn't
> exist"

tak - mechanizm preferencji pokazuje tylko to spelling engine'y
zarejestrowane przez punkt rozszerzeń.

> - w jaki sposob potem po podlaczeniu engine moge usunac slowa kluczowe
> z tekstu ktory bedzie sprawdzany ??

musiałbyś to uwzględnić w swoim spellingEngine

yaa...@gmail.com

nieprzeczytany,
4 wrz 2007, 10:40:324.09.2007
do
Ok udalo mi sie wrzucic spelling do mojego edytora. Mam tylko klopot
ze slownikiem polskim. Znalazlem jakis w sieci, zachowujacy format
slowo-linia ale jest on dosyc ograniczony. To znaczy nie posiada
bardzo duzej ilosci slow, szczegolnie chodzi o odmiany polskie. Zwykle
slowa sa w mianowniku a pozostale przypadki nie.
I teraz moje pytanie czy istnieje jakis algorytm ktory mozna by
przepisac, ktory potrafilby porownac slowa tak zeby mozna bylo
uwzglednic przypadki ?? Czy raczej nalezy szukac slownika z wszystkimi
mozliwymi slowami (odmianami, przypadkami) ?? Ale to chyba malo
prawdopodobne zeby taki slownik istnial ??

Nowe wiadomości: 0