Пример #1
0
  /** {@inheritDoc} */
  @Override
  public void init(final BundleContext aContext, final DependencyManager aManager)
      throws Exception {
    // Do not start if we're running headless...
    if (GraphicsEnvironment.isHeadless()) {
      throw new RuntimeException("Cannot start client: running headless.");
    }

    final ClientController clientController = new ClientController(aContext);

    aManager.add(
        createBundleAdapterService(Bundle.ACTIVE, CP_BUNDLE_FILTER, true /* propagate */) //
            .setImplementation(ComponentProviderBundleAdapter.class));

    aManager.add(
        createBundleAdapterService(Bundle.ACTIVE, TOOL_BUNDLE_FILTER, true /* propagate */) //
            .setImplementation(ToolBundleAdapter.class));

    aManager.add(
        createBundleAdapterService(Bundle.ACTIVE, DEVICE_BUNDLE_FILTER, true /* propagate */) //
            .setImplementation(DeviceBundleAdapter.class));

    aManager.add(
        createBundleAdapterService(Bundle.ACTIVE, EXPORTER_BUNDLE_FILTER, true /* propagate */) //
            .setImplementation(ExporterBundleAdapter.class));

    Properties props = new Properties();
    props.put(Constants.SERVICE_PID, UIManagerConfigurator.PID);

    String[] serviceNames =
        new String[] {UIManagerConfigurator.class.getName(), ManagedService.class.getName()};

    // UI Manager Configuration...
    aManager.add(
        createComponent() //
            .setInterface(serviceNames, props) //
            .setImplementation(UIManagerConfigurator.class) //
        );

    props.put(Constants.SERVICE_PID, UIColorSchemeManager.PID);

    serviceNames =
        new String[] {UIColorSchemeManager.class.getName(), ManagedServiceFactory.class.getName()};

    // UI Manager Configuration...
    aManager.add(
        createComponent() //
            .setInterface(serviceNames, props) //
            .setImplementation(UIColorSchemeManager.class));

    // User session manager...
    aManager.add(
        createComponent() //
            .setImplementation(new UserSessionManager()) //
            .add(
                createServiceDependency() //
                    .setService(ProjectManager.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(UserSettingsManager.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(PreferencesService.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(LogService.class) //
                    .setRequired(false) //
                ));

    // All the interfaces we're registering the client controller under...
    serviceNames =
        new String[] {
          AcquisitionDataListener.class.getName(),
          AcquisitionProgressListener.class.getName(),
          AcquisitionStatusListener.class.getName(),
          AnnotationListener.class.getName(),
          PlatformCallback.class.getName()
        };

    // Client controller...
    aManager.add(
        createComponent() //
            .setInterface(serviceNames, null) //
            .setImplementation(clientController) //
            .add(
                createServiceDependency() //
                    .setService(HostProperties.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(ProjectManager.class) //
                    .setRequired(true) //
                    .setCallbacks("setProjectManager", "removeProjectManager")) //
            .add(
                createServiceDependency() //
                    .setService(DataAcquisitionService.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(UIColorSchemeManager.class) //
                    .setRequired(true)) //
            .add(
                createServiceDependency() //
                    .setService(ComponentProvider.class, "(OLS-ComponentProvider=Menu)") //
                    .setCallbacks("addMenu", "removeMenu") //
                    .setRequired(false)) //
            .add(
                createServiceDependency() //
                    .setService(Device.class) //
                    .setCallbacks("addDevice", "removeDevice") //
                    .setRequired(false)) //
            .add(
                createServiceDependency() //
                    .setService(Tool.class) //
                    .setCallbacks("addTool", "removeTool") //
                    .setRequired(false)) //
            .add(
                createServiceDependency() //
                    .setService(Exporter.class) //
                    .setCallbacks("addExporter", "removeExporter") //
                    .setRequired(false)) //
            .add(
                createConfigurationDependency() //
                    .setPid(UIManagerConfigurator.PID)) //
        );
  }