2013-03-13 2 views
2

양식 편집기 구성 요소의 미리보기 창으로 사용하기 위해 수정 된 Eclipse (Indigo)의보기에 org.eclipse.swt.browser.Browser를 포함합니다. 양식 모델 변경 또는 요소 선택 변경시 코드는 vaadin 6을 통해 양식을 렌더링하고이를 브라우저 구성 요소에 표시합니다.SWT 브라우저 구성 요소 블록 SWT UI 스레드

이제 대부분의 경우 매력적으로 작동합니다. 그러나 매우 복잡한 일부 폼의 경우, vaadin에 의해 생성 된 HTML + JS는 브라우저에 많은 스트레스를 유발하여 최대 몇 초 동안 반응이 없습니다. 그 자체로 비극적 인 것은 아니지만 (1), SWT 브라우저 구성 요소가 그 물건을 렌더링하는 데 바쁜 한 전체 Eclipse UI 스레드가 차단됩니다.

간단한 재현 방법은 자바 스크립트 함수 (예 : https://gist.github.com/creinig/5150747 참조)를 차단하고 SWT 브라우저에 표시하는 HTML 페이지를 만드는 것입니다. 해당 JS 함수가 실행되는 동안 전체 SWT 응용 프로그램은 아무 것도 응답하지 않습니다.

나는이 문제에 발견 한 유일한 정보

(해상도없이)

하지 않는 것이 도움이 :(

브라우저 구성 요소의 API docs

는 렌더링이 UI 스레드에 의해 주기적으로 실행 여부에 어떤 통찰력을 제공하는 것 또는하지 않는 자체가 뭔가를 유발하는 경우를 차단 UI.

브라우저에서 물건을 매달려에서 이클립스 UI를 보호하기 위해 할 수있는 SWT의 UI 스레드? 아니면 다른 어떤에서 브라우저 구성 요소의 렌더링을 분리하는 방법이 있나요?


(1) : 우리는이 복잡성 수준의 형식이 필요합니다. 렌더링 성능을 이미 최적화하고 있으며, vaadin7로 전환하면 속도가 빨라질 가능성이 큽니다. 그러나 심각성이 줄어들면 문제는 확실히 지속될 것입니다.

답변

0

진정한 해결책은 아니지만 Works For Me (TM)의 해결 방법은 입니다. here으로 설명한 것처럼 SWT에서 시스템의 기본 브라우저를 실행하는 것은 정말 쉽습니다. 그래서 브라우저 컨트롤을 비활성화하고 대신 시스템 브라우저를 열어 뷰를 "분리"할 브라우저 컨트롤이 포함 된 뷰에 옵션을 추가 할 것입니다.

는 경우 링크 된 페이지가 여기에 그물을 내려 요점이다 :

org.eclipse.swt.program.Program.launch("http://my.funny.url/"); 

가 HTTP URL에 등록 된 응용 프로그램을 실행합니다. 즉, 시스템 기본 브라우저. 행복이 계속됨 :

관련 문제