2013-07-30 2 views
0

В нашем приложении rcp мы внедрили функцию входа в систему, используя фреймворк eclipse (функция входа на экран Splash).Обход экрана входа

Теперь, как мы обойдем этот логин (включая заставку), предоставив аргументы VM?

Если аргументы VM обеспечены правильное имя пользователя и пароль, мы не хотим, чтобы показать страницу входа в систему (это включает в себя заставку, потому что функция Логин находится на самой заставке)

Любые идеи?

ответ

0

Диалоговое окно входа в заставку реализовано с помощью SplashScreenHandler. Это фактически добавляется в ваш пакет приложений. Должно быть относительно просто посмотреть исходный код вашего обработчика заставки и добавить туда аргументы VM.

Вы также можете просто отключить заставку с помощью опции командной строки -noSplash.

+0

Я имел в виду передать аргументы виртуальной машины из конфигурации «Запуск» и посмотреть, не скроет ли среда eclipse обойти страницу входа –

+0

См. Http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html – parasietje

+0

Опция, которую вы ищете, это '- noSplash ' – parasietje

1

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

Создать ваш диалог при запуске приложения, как-то так:

Application implements IApplication { 

@Override 
public Object start(IApplicationContext context) throws Exception { 
    Display display = PlatformUI.createDisplay(); 
    try { 

     LoginDialog dialog = new LoginDialog(display.getActiveShell()); 
     if (dialog.open() == Dialog.CANCEL) { 
      return EXIT_OK; 
     } 

     int code = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); 

     // Exit the application with an appropriate return code. 
     return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; 

    } finally { 

     if (display != null) { 
      display.dispose(); 
     } 
    } 
} 

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

String username = System.getProperty("username"); 
    String pwd = System.getProperty("password"); 
    if (username != null && pwd != null) { 
     // do something with username and password 
    } else { 
     LoginDialog dialog = new LoginDialog(display.getActiveShell()); 
     if (dialog.open() == Dialog.CANCEL) { 
      return EXIT_OK; 
      } 
    } 

Кроме того, Platform.endSplash(); Может быть полезно.

+0

ой, я смог пропустить часть входа, но не сам экран заставки. Поскольку до того, как элемент управления будет запущен в методе запуска приложения, всплывет всплеск! Поэтому, даже если я вызываю Platform.endSplash() в методе start, он не имеет никаких эффектов! Спасибо за ваши указатели –

+0

Может быть, вы могли бы попытаться создать пользовательский обработчик всплеска, который не будет отображаться (или может быть закрыт раньше)? В противном случае, как я уже упоминал ранее, вероятно, нет возможности пропустить условное всплеск. –

+0

Да, возможно, мне нужно это проверить. В любом случае, спасибо за предложения –