2013-11-25 3 views
0

Я разрабатываю плагин в eclipse, используя класс ViewPart класса eclipse. Внутри viewpart у меня есть стиль текста. Рассмотрим, что у меня есть 2 вида view_1 и view_2, и оба имеют стиль text_1 и styledText_2. Для некоторой функции поиска мне нужно получить ориентированный текстовый текст. Я пробовал с кодом ниже, но не был успешным.Получить содержимое из eclipse viewpart

IWorkbenchPage page = PlatformUI.getWorkbench() 
       .getActiveWorkbenchWindow().getActivePage(); 
IWorkBenchPart activePart = page.getActivePart(); // will give the foucsed view part 

Оба вида создаются одним и тем же классом и имеют статическую текстовую переменную say «text».

Я попытался с

System.out.println(((StyledText)page.getActivePart().getClass().getDeclaredField("text").get(null)).getText()); 

Но это выводит текстовое содержание последнего открытого вида в , как я могу получить стилизованную текст сфокусированного содержания.

+0

Каким образом ваш код теперь работает? «activePart» должен быть вашим «ViewPart», если он является активной частью. –

+0

Я попытался использовать этот System.out.println (((StyledText) page.getActivePart(). GetClass(). GetDeclaredField («текст»). Get (null)). GetText()); но его отпечатки текста второго представления – AJJ

+0

getActivePart определенно возвращает текущую активную часть –

ответ

2

Вы могли бы попытаться получить собственное представление по идентификатору, а затем получить необходимую информацию непосредственно с точки зрения:

IViewPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() 
      .findView(MyView.ID); 
     if (part instanceof MyView) { 
      MyView view = (MyView) part; 
      StyledText text = view.getStyledText(); 
     } 

Или ввести интерфейс для обоих представлений, которые будут иметь метод getStyledText

IViewReference[] references = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences(); 
     for (IViewReference ref : references) { 
      IViewPart view = ref.getView(false); 
      if (view instanceof IStyledTextProvider) { 
       StyledText text = ((IStyledTextProvider) view).getStyledText(); 
      } 
     } 
+0

Если оба вида рисуются из одного класса вида, то как я могу получить содержимое ?? !!! – AJJ

+0

Что значит «взгляды рисуются с одного взгляда»? –

+0

У меня есть один класс вида с именем TestView.java, созданный путем расширения ViewPart. В этом я буду иметь styledText для отображения содержимого, и у меня есть меню правой кнопки мыши, чтобы создать дублирующее представление TestView.java. Этот дублированный вид будет иметь различное содержимое в стилизованном тексте. Короче говоря, один класс вида с двумя разными содержимым в стилевом тексте класса представления. Как получить желаемый стиль текста из представления. – AJJ

Смежные вопросы