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

Как развернуть псевдопапку в интерфейсе Teacmnter


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

Добрый день!

Есть плагин для TC, он создает компонент, и связывает его с выделенным в интерфейсе элементом.

При этом созданный компонент появляется в псевдопапке под выделенным элементом.

 

Эта псевдопапка может быть свернута, можно ли её развернуть программно?

И как максимум, развернуть её и выделить новосозданный компонент?

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


UnPinned posts

думаю это возможно, но такую именно задачу не делал,нужно писать код чтобы проверить

 

а в чем необходимость разворачивать папку?если нужен объект который виден через псевдопапку, может проще на отдельной вкладке открыть этот объект? это и в плане кода гораздо быстрее и меньше времени

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, lexx174 сказал:

 

а в чем необходимость разворачивать папку?если нужен объект который виден через псевдопапку, может проще на отдельной вкладке открыть этот объект? это и в плане кода гораздо быстрее и меньше времени

Мне просто показать юзеру, что вот он созданный элемент. Юзер вряд ли будет его дальше редактировать, поэтому может и излишне открывать его в новой вкладке.  Но как запасной вариант, подойдет. Можете подсказать код?

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

как раз таки вкладка - это вовсе не излишне,это по сути команда Открыть. или отправить в Мой тимцентр.

 

AIFDesktop adesktop = AIFUtility.getAIFPortal().getDesktopManager().getActiveDesktop();
AbstractAIFCommand open = session.getOpenCommand(new Object[] { adesktop, item} );
((OpenCommand)open).executeModeless();

 

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, lexx174 сказал:

как раз таки вкладка - это вовсе не излишне,это по сути команда Открыть. или отправить в Мой тимцентр.

 


AIFDesktop adesktop = AIFUtility.getAIFPortal().getDesktopManager().getActiveDesktop();
AbstractAIFCommand open = session.getOpenCommand(new Object[] { adesktop, item} );
((OpenCommand)open).executeModeless();

 

Спасибо, завтра попробую.

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, lexx174 сказал:

как раз таки вкладка - это вовсе не излишне,это по сути команда Открыть. или отправить в Мой тимцентр.

 


AIFDesktop adesktop = AIFUtility.getAIFPortal().getDesktopManager().getActiveDesktop();
AbstractAIFCommand open = session.getOpenCommand(new Object[] { adesktop, item} );
((OpenCommand)open).executeModeless();

 

У у меня кстати ранее был опыт с этим)

Это код для Файл-Открыть, у меня была проблема я хотел статус открыть в отдельной вкладке в моем тимцентре, так он открывал применяемость

То есть от открывает просто объект, если объект будет не Элемент вероятней всего он его не отправить в новую вкладку)

Я пользовался вот этим 

PerspectiveDefService s = new PerspectiveDefService();
s.activate();
IPerspectiveDef findByPerspectiveId = s.findByPerspectiveId("com.teamcenter.rac.ui.perspectives.navigatorPerspective");
findByPerspectiveId.openPerspective(new InterfaceAIFComponent[] { (InterfaceAIFComponent)comp });

 

Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, alexeytur сказал:

Добрый день!

Есть плагин для TC, он создает компонент, и связывает его с выделенным в интерфейсе элементом.

При этом созданный компонент появляется в псевдопапке под выделенным элементом.

 

Эта псевдопапка может быть свернута, можно ли её развернуть программно?

И как максимум, развернуть её и выделить новосозданный компонент?

 

IWorkbenchPart iWorkbenchPart = HandlerUtil.getActivePart(arg0);
        
         IStructuredViewerProvider iStructuredViewerProvider = (IStructuredViewerProvider)iWorkbenchPart;
          StructuredViewer structuredViewer = iStructuredViewerProvider.getViewer();
          final Display display = HandlerUtil.getActiveShellChecked(arg0).getDisplay();
            final ISelection paramISelection = HandlerUtil.getCurrentSelection(arg0);
            final TreeViewer treeViewer = (TreeViewer)structuredViewer;

          
          
          if (treeViewer != null) {
              TreeSelection treeSelection = (TreeSelection)AdapterUtil.getAdapter(paramISelection, TreeSelection.class);
              final TreePath[] selectedTreePaths = (treeSelection == null) ? null : treeSelection.getPaths();
              if (selectedTreePaths != null && selectedTreePaths.length > 0) {

                      ITreeContentProvider iTreeContentProvider = (ITreeContentProvider)treeViewer.getContentProvider();
                      WorkspaceCommonContentProvider workspaceCommonContentProvider = (iTreeContentProvider instanceof WorkspaceCommonContentProvider) ? (WorkspaceCommonContentProvider)iTreeContentProvider : null;
                      byte b1 = 0;
                      int i = selectedTreePaths.length;
                      TreePath[] arrayOfTreePath;
                      int j = (arrayOfTreePath = selectedTreePaths).length;
                      for (byte b2 = 0; b2 < j; b2++) {
                        TreePath treePath1 = arrayOfTreePath[b2];
                        TreePath treePath2 = treePath1;
                        Object object = treePath1.getLastSegment();
                        if (object != null) {
                          String str = object.toString();
                         TCComponentContentProvider tCComponentContentProvider = null;
                         if (workspaceCommonContentProvider != null) {
                            ITreeContentProvider iTreeContentProvider1 = workspaceCommonContentProvider.getDelegateContentProvider(object);
                            if (iTreeContentProvider1 instanceof TCComponentContentProvider)
                              tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider1; 
                          } else if (iTreeContentProvider instanceof TCComponentContentProvider) {
                            tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider;
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(true); 
                          try {
                            LinkedList<TreePath> linkedList = new LinkedList();
                            linkedList.addFirst(treePath2);
                            byte b = -1;
                            byte b3 = 0;
                            byte b4 = 0;
                           
                            while (!linkedList.isEmpty()) {
                              if (b != -1 && ++b3 >= b)
                                break; 
                              int k = linkedList.size();
                              Object[] arrayOfObject = { str, Integer.valueOf(b3), Integer.valueOf(b4) };

                              byte b5 = 50;
                              final ArrayList<TreePath> arrayList = new ArrayList();
                              for (int m = 0; m < k; m += b5) {
                                arrayList.clear();
                                for (byte b6 = 0; b6 < b5; b6++) {
                                  int n = m + b6;
                                  if (n >= k)
                                    break; 
                                  arrayList.add(linkedList.get(n));
                                  
                                } 
                                Runnable runnable = new Runnable() {
                                    public void run() {
                                      for (TreePath treePath : arrayList)
                                        treeViewer.setExpandedState(treePath, true); 
                                    }
                                  };
                                display.syncExec(runnable);
                              } 
                              String str2 = MessageFormat.format(Messages.ExpandCollapseHandler_AccessNthLevel, arrayOfObject);
                              final LinkedList<TreePath> linkedList1 = new LinkedList();
                              for (TreePath treePath : linkedList) {
                                b4++;
                                IStatus iStatus = expandByTreePath(treeViewer, iTreeContentProvider, treePath, -1, 1, linkedList1,display);

                                Object object11 = treePath.getLastSegment();

                                  Object[] arrayOfObject11 = iTreeContentProvider.getChildren(object);
                                  byte b11 = (byte) ((arrayOfObject == null) ? 0 : arrayOfObject.length);
                                  if (b!=-1)
                                    for (byte b111 = 0; b111 < b; b111++) {
                                      Object object111 = arrayOfObject[b1];
                                      if (object111 != null) {
                                        if (!cyclicReference(object111, treePath)) {
                                          TreePath treePath11 = treePath.createChildPath(object111);
                                          if(treePath11.getLastSegment().toString().indexOf("View")!=-1){
                                              linkedList1.addLast(treePath);
                                          Runnable runnable = new Runnable() {
                                              public void run() {
                                                for (TreePath treePath : linkedList1)
                                                  treeViewer.setExpandedState(treePath, true); 
                                              }
                                            };
                                          display.syncExec(runnable);
                                          }
                                        } 
                                      } 
                                    }  
                                
                              
                              } 
                              linkedList = linkedList1;
                            } 
                          } finally {
                            if (tCComponentContentProvider != null)
                              tCComponentContentProvider.setSyncLoadSwitch(false); 
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(false); 
                        } 
                      } 


              } 
            } 

Вот из декомпиляции подправленный)

Вместо View отношения напишите свое...и не нашел пока как ISelection сделать для этого объекта, но думаю там все просто, от treeview идем у него и метод есть нужный

Ссылка на сообщение
Поделиться на других сайтах
13 часов назад, lexx174 сказал:

как раз таки вкладка - это вовсе не излишне,это по сути команда Открыть. или отправить в Мой тимцентр.

 


AIFDesktop adesktop = AIFUtility.getAIFPortal().getDesktopManager().getActiveDesktop();
AbstractAIFCommand open = session.getOpenCommand(new Object[] { adesktop, item} );
((OpenCommand)open).executeModeless();

 

 

10 часов назад, butulec сказал:

У у меня кстати ранее был опыт с этим)

Это код для Файл-Открыть, у меня была проблема я хотел статус открыть в отдельной вкладке в моем тимцентре, так он открывал применяемость

То есть от открывает просто объект, если объект будет не Элемент вероятней всего он его не отправить в новую вкладку)

Я пользовался вот этим 


PerspectiveDefService s = new PerspectiveDefService();
s.activate();
IPerspectiveDef findByPerspectiveId = s.findByPerspectiveId("com.teamcenter.rac.ui.perspectives.navigatorPerspective");
findByPerspectiveId.openPerspective(new InterfaceAIFComponent[] { (InterfaceAIFComponent)comp });

 

 

 

Спасибо, эти способы работают.

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, butulec сказал:

 


IWorkbenchPart iWorkbenchPart = HandlerUtil.getActivePart(arg0);
        
         IStructuredViewerProvider iStructuredViewerProvider = (IStructuredViewerProvider)iWorkbenchPart;
          StructuredViewer structuredViewer = iStructuredViewerProvider.getViewer();
          final Display display = HandlerUtil.getActiveShellChecked(arg0).getDisplay();
            final ISelection paramISelection = HandlerUtil.getCurrentSelection(arg0);
            final TreeViewer treeViewer = (TreeViewer)structuredViewer;

          
          
          if (treeViewer != null) {
              TreeSelection treeSelection = (TreeSelection)AdapterUtil.getAdapter(paramISelection, TreeSelection.class);
              final TreePath[] selectedTreePaths = (treeSelection == null) ? null : treeSelection.getPaths();
              if (selectedTreePaths != null && selectedTreePaths.length > 0) {

                      ITreeContentProvider iTreeContentProvider = (ITreeContentProvider)treeViewer.getContentProvider();
                      WorkspaceCommonContentProvider workspaceCommonContentProvider = (iTreeContentProvider instanceof WorkspaceCommonContentProvider) ? (WorkspaceCommonContentProvider)iTreeContentProvider : null;
                      byte b1 = 0;
                      int i = selectedTreePaths.length;
                      TreePath[] arrayOfTreePath;
                      int j = (arrayOfTreePath = selectedTreePaths).length;
                      for (byte b2 = 0; b2 < j; b2++) {
                        TreePath treePath1 = arrayOfTreePath[b2];
                        TreePath treePath2 = treePath1;
                        Object object = treePath1.getLastSegment();
                        if (object != null) {
                          String str = object.toString();
                         TCComponentContentProvider tCComponentContentProvider = null;
                         if (workspaceCommonContentProvider != null) {
                            ITreeContentProvider iTreeContentProvider1 = workspaceCommonContentProvider.getDelegateContentProvider(object);
                            if (iTreeContentProvider1 instanceof TCComponentContentProvider)
                              tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider1; 
                          } else if (iTreeContentProvider instanceof TCComponentContentProvider) {
                            tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider;
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(true); 
                          try {
                            LinkedList<TreePath> linkedList = new LinkedList();
                            linkedList.addFirst(treePath2);
                            byte b = -1;
                            byte b3 = 0;
                            byte b4 = 0;
                           
                            while (!linkedList.isEmpty()) {
                              if (b != -1 && ++b3 >= b)
                                break; 
                              int k = linkedList.size();
                              Object[] arrayOfObject = { str, Integer.valueOf(b3), Integer.valueOf(b4) };

                              byte b5 = 50;
                              final ArrayList<TreePath> arrayList = new ArrayList();
                              for (int m = 0; m < k; m += b5) {
                                arrayList.clear();
                                for (byte b6 = 0; b6 < b5; b6++) {
                                  int n = m + b6;
                                  if (n >= k)
                                    break; 
                                  arrayList.add(linkedList.get(n));
                                  
                                } 
                                Runnable runnable = new Runnable() {
                                    public void run() {
                                      for (TreePath treePath : arrayList)
                                        treeViewer.setExpandedState(treePath, true); 
                                    }
                                  };
                                display.syncExec(runnable);
                              } 
                              String str2 = MessageFormat.format(Messages.ExpandCollapseHandler_AccessNthLevel, arrayOfObject);
                              final LinkedList<TreePath> linkedList1 = new LinkedList();
                              for (TreePath treePath : linkedList) {
                                b4++;
                                IStatus iStatus = expandByTreePath(treeViewer, iTreeContentProvider, treePath, -1, 1, linkedList1,display);

                                Object object11 = treePath.getLastSegment();

                                  Object[] arrayOfObject11 = iTreeContentProvider.getChildren(object);
                                  byte b11 = (byte) ((arrayOfObject == null) ? 0 : arrayOfObject.length);
                                  if (b!=-1)
                                    for (byte b111 = 0; b111 < b; b111++) {
                                      Object object111 = arrayOfObject[b1];
                                      if (object111 != null) {
                                        if (!cyclicReference(object111, treePath)) {
                                          TreePath treePath11 = treePath.createChildPath(object111);
                                          if(treePath11.getLastSegment().toString().indexOf("View")!=-1){
                                              linkedList1.addLast(treePath);
                                          Runnable runnable = new Runnable() {
                                              public void run() {
                                                for (TreePath treePath : linkedList1)
                                                  treeViewer.setExpandedState(treePath, true); 
                                              }
                                            };
                                          display.syncExec(runnable);
                                          }
                                        } 
                                      } 
                                    }  
                                
                              
                              } 
                              linkedList = linkedList1;
                            } 
                          } finally {
                            if (tCComponentContentProvider != null)
                              tCComponentContentProvider.setSyncLoadSwitch(false); 
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(false); 
                        } 
                      } 


              } 
            } 

Вот из декомпиляции подправленный)

Вместо View отношения напишите свое...и не нашел пока как ISelection сделать для этого объекта, но думаю там все просто, от treeview идем у него и метод есть нужный

 

Пытался скомпилить этот код, нет находит функций expandByTreePath и cyclicReference. И что подставлять в arg0?

 

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, alexeytur сказал:

 

Пытался скомпилить этот код, нет находит функций expandByTreePath и cyclicReference. И что подставлять в arg0?

 

arg0 это из public Object execute(ExecutionEvent arg0) throws ExecutionException  или у вас не по кнопке?

              TreeSelection treeSelection = (TreeSelection)AdapterUtil.getAdapter(paramISelection, TreeSelection.class);
              final TreePath[] selectedTreePaths = (treeSelection == null) ? null : treeSelection.getPaths();
              if (selectedTreePaths != null && selectedTreePaths.length > 0) {

                      ITreeContentProvider iTreeContentProvider = (ITreeContentProvider)treeViewer.getContentProvider();
                      WorkspaceCommonContentProvider workspaceCommonContentProvider = (iTreeContentProvider instanceof WorkspaceCommonContentProvider) ? (WorkspaceCommonContentProvider)iTreeContentProvider : null;
                      byte b1 = 0;
                      int i = selectedTreePaths.length;
                      TreePath[] arrayOfTreePath;
                      int j = (arrayOfTreePath = selectedTreePaths).length;
                      for (byte b2 = 0; b2 < j; b2++) {
                        TreePath treePath1 = arrayOfTreePath[b2];
                        TreePath treePath2 = treePath1;
                        Object object = treePath1.getLastSegment();
                        if (object != null) {
                          String str = object.toString();
                         TCComponentContentProvider tCComponentContentProvider = null;
                         if (workspaceCommonContentProvider != null) {
                            ITreeContentProvider iTreeContentProvider1 = workspaceCommonContentProvider.getDelegateContentProvider(object);
                            if (iTreeContentProvider1 instanceof TCComponentContentProvider)
                              tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider1; 
                          } else if (iTreeContentProvider instanceof TCComponentContentProvider) {
                            tCComponentContentProvider = (TCComponentContentProvider)iTreeContentProvider;
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(true); 
                          try {
                            LinkedList<TreePath> linkedList = new LinkedList();
                            linkedList.addFirst(treePath2);
                            byte b = -1;
                            byte b3 = 0;
                            byte b4 = 0;
                           
                            while (!linkedList.isEmpty()) {
                              if (b != -1 && ++b3 >= b)
                                break; 
                              int k = linkedList.size();
                              Object[] arrayOfObject = { str, Integer.valueOf(b3), Integer.valueOf(b4) };

                              byte b5 = 50;
                              final ArrayList<TreePath> arrayList = new ArrayList();
                              for (int m = 0; m < k; m += b5) {
                                arrayList.clear();
                                for (byte b6 = 0; b6 < b5; b6++) {
                                  int n = m + b6;
                                  if (n >= k)
                                    break; 
                                  arrayList.add(linkedList.get(n));
                                  
                                } 
                                Runnable runnable = new Runnable() {
                                    public void run() {
                                      for (TreePath treePath : arrayList)
                                        treeViewer.setExpandedState(treePath, true); 
                                    }
                                  };
                                display.syncExec(runnable);
                              } 
                              String str2 = MessageFormat.format(Messages.ExpandCollapseHandler_AccessNthLevel, arrayOfObject);
                              final LinkedList<TreePath> linkedList1 = new LinkedList();
                              for (TreePath treePath : linkedList) {
                                b4++;
                               
                                Object object0 = treePath.getLastSegment();

                                  Object[] arrayOfObject0 = iTreeContentProvider.getChildren(object0);
                                  byte b0 = (byte) ((arrayOfObject0 == null) ? 0 : arrayOfObject0.length);
                                  if (b0!=-1)
                                    for (byte b10 = 0; b10 < b0; b10++) {
                                      Object object10 = arrayOfObject0[b10];
                                      if (object10 != null) {
                                          TreePath treePath0 = treePath.createChildPath(object10);
                                          if(treePath0.getLastSegment().toString().indexOf("View")!=-1){
                                              linkedList1.addLast(treePath0);
                                          Runnable runnable = new Runnable() {
                                              public void run() {
                                                for (TreePath treePath0 : linkedList1)
                                                  treeViewer.setExpandedState(treePath0, true); 
                                              }
                                            };
                                          display.syncExec(runnable);
                                          }
                                         
                                      } 
                                    }  
                                 
                                  } 
                              linkedList = linkedList1;
                            } 
                          } finally {
                            if (tCComponentContentProvider != null)
                              tCComponentContentProvider.setSyncLoadSwitch(false); 
                          } 
                          if (tCComponentContentProvider != null)
                            tCComponentContentProvider.setSyncLoadSwitch(false); 
                        } 
                      } 


              } 
            

 

Ссылка на сообщение
Поделиться на других сайтах
12 минут назад, butulec сказал:

arg0 это из public Object execute(ExecutionEvent arg0) throws ExecutionException

Понятно.

 

Остался вопрос по функциям  expandByTreePath и cyclicReference, где они находятся?

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, alexeytur сказал:

Понятно.

 

Остался вопрос по функциям  expandByTreePath и cyclicReference, где они находятся?

посмотрите, я убрал, вывел из функций, у меня все работает)

Это просто из декомпилированных плагинов, можно все собрать в маленький код, просто надо рефакторингом заняться, а времени нет)

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

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

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

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

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

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

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

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

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

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

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




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