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

Как открыть диалог редактирования применяемости статуса?


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

Добрый день, как можно открыть диалог редактирования применяемости статуса из кода плагина ТС?

 

173d4e174880b5e2449e3c18b9355596.jpgAAAPxYl.jpg

 

BKn0kG0.jpg

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


UnPinned posts
4 часа назад, alexeytur сказал:

Добрый день, как можно открыть диалог редактирования применяемости статуса из кода плагина ТС?

 

173d4e174880b5e2449e3c18b9355596.jpgAAAPxYl.jpg

 

BKn0kG0.jpg

 AbstractAIFUIApplication localAbstractAIFUIApplication = AIFUtility.getCurrentApplication();
              try
              {
                OpenCommand localOpenCommand = (OpenCommand)AifrcpPlugin.getSessionService().getDefaultSession().getOpenCommand(new Object[] { localAbstractAIFUIApplication.getDesktop(), comp });
                localOpenCommand.executeModeless();
              }
              catch (Exception localException)
              {
              
              }

 

Где comp это сам объект статуса, надеюсь он у вас есть)

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

 AbstractAIFUIApplication localAbstractAIFUIApplication = AIFUtility.getCurrentApplication();
              try
              {
                OpenCommand localOpenCommand = (OpenCommand)AifrcpPlugin.getSessionService().getDefaultSession().getOpenCommand(new Object[] { localAbstractAIFUIApplication.getDesktop(), comp });
                localOpenCommand.executeModeless();
              }
              catch (Exception localException)
              {
              
              }

 

Где comp это сам объект статуса, надеюсь он у вас есть)

 

 

Спасибо, а как заставить этот диалог висеть модально? Вызываю executeModal(), но код продолжает выполняться сразу за этой функцией.

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

Попробуйте основной код пустить по другому потоку, и остановите его пока работаете со статусами, ну как вариант)

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

Попробуйте основной код пустить по другому потоку, и остановите его пока работаете со статусами, ну как вариант)

 

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

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

Вставил код

 

AbstractAIFUIApplication localAbstractAIFUIApplication = AIFUtility.getCurrentApplication();
              try
              {
                OpenCommand localOpenCommand = (OpenCommand)AifrcpPlugin.getSessionService().getDefaultSession().getOpenCommand(new Object[] { localAbstractAIFUIApplication.getDesktop(), comp });
                localOpenCommand.executeModal();
              }
              catch (Exception localException)
              {
              
              }

 

в главную процедуру хэндлера и все равно, диалог стартует не модально.

 

Может, это можно как-нибудь сделать?

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

а через интерфейс диалог всегда модально открывается?

Да, относительно главного окна тимцентра он открывается модально. Но мой плагин создает диалог на основе SWT-шного Dialog, на нем есть кнопка и по нажатии на нее я хотел открывать стандартный диалог редактирования статуса, а он открывается не модально.

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

откройте диалог с применяемостью не через ваш диалог, а напрямую из обработчика, и проверьте

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

откройте диалог с применяемостью не через ваш диалог, а напрямую из обработчика, и проверьте

Также немодально открывается.

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

попробуйте другой конструктор использовать

 

OpenCommand(AIFDesktop pAIFDesktop, Window pWindow, InterfaceAIFComponent pInterfaceAIFComponent)

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

попробуйте другой конструктор использовать

 

OpenCommand(AIFDesktop pAIFDesktop, Window pWindow, InterfaceAIFComponent pInterfaceAIFComponent)

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

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

Открывается он модально, то есть нельзя "пощелкать" по другим окнам пока не закроется окно с редактированием статуса

 

AbstractAIFUIApplication localAbstractAIFUIApplication = AIFUtility.getCurrentApplication();
              try
              {
                OpenCommand localOpenCommand = (OpenCommand)AifrcpPlugin.getSessionService().getDefaultSession().getOpenCommand(new Object[] { localAbstractAIFUIApplication.getDesktop(), comp });
                localOpenCommand.executeModal();
              }
              catch (Exception localException)
              {
              
              }

это стандартная классическая штука

Я думаю тут вопрос в том, чтобы приостановить выполнение кода, который идет, и продолжить его выполнение когда закроется эта стандартная форма редактирования статуса (если я правильно понял :D)

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

Открывается он модально, то есть нельзя "пощелкать" по другим окнам пока не закроется окно с редактированием статуса

 


AbstractAIFUIApplication localAbstractAIFUIApplication = AIFUtility.getCurrentApplication();
              try
              {
                OpenCommand localOpenCommand = (OpenCommand)AifrcpPlugin.getSessionService().getDefaultSession().getOpenCommand(new Object[] { localAbstractAIFUIApplication.getDesktop(), comp });
                localOpenCommand.executeModal();
              }
              catch (Exception localException)
              {
              
              }

это стандартная классическая штука

Я думаю тут вопрос в том, чтобы приостановить выполнение кода, который идет, и продолжить его выполнение когда закроется эта стандартная форма редактирования статуса (если я правильно понял :D)

Да так, открывается он как-бы модально, но после executeModal() выполнение сразу продолжается и не поймаешь момент закрытия этого диалога.

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

ваш диалог как открывается?напрямую в хэндлере или через operation или другой поток?

Мой из хэндлера

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

можете конструктор диалога вашего показать?

Показать не смогу, ибо сейчас в отпуске.  Но насколько помню, конструктор был тривиальный. А диалог редактирования статуса вызывался из обработчика Selection объекта SWT Button, на этом диалоге.

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

попробуйте другой конструктор использовать

 

OpenCommand(AIFDesktop pAIFDesktop, Window pWindow, InterfaceAIFComponent pInterfaceAIFComponent)

 

Скажите, где взять объект Window?

Передаю туда результат HandlerUtil.getActiveWorkbenchWindowChecked(event), выдает ошибку "java.lang.NoSuchMethodException: Unable to find the constructor for Class specification name [com.teamcenter.rac.commands.open.OpenCommand]"

 

30.07.2021 в 19:01, lexx174 сказал:

можете конструктор диалога вашего показать?

	    public TUDialog(Shell parentShell) {
	        super(parentShell);
	    }

	    @Override
	    protected void configureShell(Shell newShell)
	    {
	        super.configureShell(newShell);
	        newShell.setText("Создать межцеховое ТУ");
	        newShell.setSize(500,900);
	        final Image image = Activator.getDefault().getImageRegistry().get("icons/TU.png");
	        newShell.setImage(image);

	    }

Вот конструктор и метод configureShell.

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

OpenCommand лежит в двух разных пакетах. Попробуйте другой пакет подключить

у вас com.teamcenter.rac.commands

а есть еще типа com.teamcenter.rac.aif.....

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

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

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

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

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

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

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

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

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

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

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




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