Перейти к публикации

TC8.3 JAVA.Как получить ExplorerApplication?


Рекомендованные сообщения

Нужно получить ExplorerApplication и затем достучаться до панели где дерево объектов папки Home(Конкретно в итоге нужно получить TreeNode, TreePath выбраного в дереве компонента).

если находясь в навигаторе вызвать метод getCurrentApplication() возвращающий AbstractAIFUIApplication, и проверить if(app instanceof AbstractExplorerApplication) то результат сообщит что это не приложение типа ExplorerApplication.

Пробовал варианты через перспективы, типа askApplication(String perspective_id), тоже безрезультатно.

У кого-нибудь получалось достучаться до ExplorerApplication?

Ссылка на сообщение
Поделиться на других сайтах


Нужно получить ExplorerApplication и затем достучаться до панели где дерево объектов папки Home(Конкретно в итоге нужно получить TreeNode, TreePath выбраного в дереве компонента).

если находясь в навигаторе вызвать метод getCurrentApplication() возвращающий AbstractAIFUIApplication, и проверить if(app instanceof AbstractExplorerApplication) то результат сообщит что это не приложение типа ExplorerApplication.

Пробовал варианты через перспективы, типа askApplication(String perspective_id), тоже безрезультатно.

У кого-нибудь получалось достучаться до ExplorerApplication?

Я бы пошел от выбранного элемента:

package ru.plm.test.actions;



import org.eclipse.core.commands.AbstractHandler;

import org.eclipse.core.commands.ExecutionEvent;

import org.eclipse.core.commands.ExecutionException;

import org.eclipse.jface.action.IAction;

import org.eclipse.jface.viewers.ISelection;

import org.eclipse.jface.viewers.IStructuredSelection;

import org.eclipse.ui.IWorkbenchWindow;

import org.eclipse.ui.handlers.HandlerUtil;

import com.teamcenter.rac.aif.kernel.AIFComponentContext;

import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;

import com.teamcenter.rac.util.MessageBox;



public class SampleAction extends AbstractHandler {

	private IWorkbenchWindow window;



	public SampleAction() {

	}



	public Object execute(ExecutionEvent event) throws ExecutionException 

	{

		System.out.println("***  run VedSpec");

		try

		{

			IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);

				

			IStructuredSelection comps=(IStructuredSelection)(window.getActivePage().getSelection());

			if(comps==null || comps.size()==0)

			{			

				MessageBox.post("Ошибка получения элемента", "Message", MessageBox.ERROR);

			}

			else

			{			 

				AIFComponentContext selected = (AIFComponentContext) comps.getFirstElement();

				InterfaceAIFComponent parent = selected.getParentComponent();

			}

		}	  

		catch (Exception e)

		{

			e.printStackTrace();

			MessageBox.post(e);

		}

		return null;

	}



	public void selectionChanged(IAction action, ISelection selection) {

	}



	public void dispose() {

	}



	public void init(IWorkbenchWindow window) {

		this.window = window;

	}

}

В принципе, когда в дебаге смотрим значение comps, там есть elements (массив выбранных элементов) и paths (массив объектов класса TreePath, пути до выбранных элементов). Как вытащить второй массив - пока не нашел... :(

Поправка:

Вместо IStructuredSelection используйте ITreeSelection, там как раз пути появятся.

Ссылка на сообщение
Поделиться на других сайтах

ITreeSelection работает но это немного не то.Я работаю с TCTree. А ITreeSelection позволяет получить выбраный узел дерева,но не swing дерева, а узел компонента пакета jface.Так что косяк

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

ITreeSelection работает но это немного не то.Я работаю с TCTree. А ITreeSelection позволяет получить выбраный узел дерева,но не swing дерева, а узел компонента пакета jface.Так что косяк

свинговыми компонентами (в частности TCTree) в 8.3 рекомендуют не пользоваться. возможно они уже перевели експлорер на SWT
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...