public void initializeFrom()

in plugins/org.apache.karaf.eik.ui/src/main/java/org/apache/karaf/eik/ui/KarafConfigurationTab.java [308:395]


    public void initializeFrom(final ILaunchConfiguration configuration) {

        FileInputStream fin = null;
        try {
            localConsole.setSelection(
                    configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_START_LOCAL_CONSOLE, true));
            remoteConsole.setSelection(
                    configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_START_REMOTE_CONSOLE, false));
            enableFeaturesManagement.setSelection(
                    configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_FEATURES_MANAGEMENT, true));

            initializeKarafPlatformModel();

            final String storedBootFeatures = configuration.getAttribute(KarafLaunchConfigurationConstants.KARAF_LAUNCH_BOOT_FEATURES, "");
            final String[] features = storedBootFeatures.split(",");
            for (final String feature : features) {
                // TODO: Not really efficient
                if (!feature.isEmpty() && !bootFeaturesList.contains(feature)) {
                    bootFeaturesList.add(feature);
                }
            }

            // TODO: This should be factored out and it should be easy to get a List of FeaturesRepository
            final IFolder featuresFolder = karafProject.getFolder("features");
            if (featuresFolder.exists()) {
                final List<FeaturesRepository> featuresRepositories = new ArrayList<FeaturesRepository>();
                final IResource[] resources = featuresFolder.members();
                for (final IResource resource : resources) {
                    if (resource.getFileExtension().equalsIgnoreCase("xml")) {
                        fin = new FileInputStream(resource.getRawLocation().toFile());
                        final XmlFeaturesRepository xmlFeatureRepository = new XmlFeaturesRepository(resource.getName(), fin);
                        featuresRepositories.add(xmlFeatureRepository);
                        fin.close();
                    }
                }

                Collections.sort(featuresRepositories, new Comparator<FeaturesRepository>() {
                    @Override
                    public int compare(final FeaturesRepository o1, final FeaturesRepository o2) {
                        return o1.getName().compareTo(o2.getName());
                    }
                });

                final FeatureResolverImpl fr = new FeatureResolverImpl(featuresRepositories);

                final List<Object> checkedFeatures = new ArrayList<Object>();
                for (final String s : bootFeaturesList) {
                    final Feature f = fr.findFeature(s);

                    if (f == null) {
                        // TODO: Set some sort of warning
                        continue;
                    }

                    final Features featuresContainer = (Features) f.getParent();
                    final FeaturesRepository featuresRepository = featuresContainer.getParent();

                    checkedFeatures.add(new AvailableFeature(f, featuresRepository));
                }

                Display.getDefault().syncExec(new Runnable() {
                    @Override
                    public void run() {
                        if (!getControl().isDisposed()) {
                            bootFeaturesViewer.setInput(bootFeaturesList);
                            bootFeaturesViewer.refresh();

                            availableFeaturesViewer.setInput(featuresRepositories);
                            availableFeaturesViewer.setCheckedElements(checkedFeatures.toArray());
                        }
                    };
                });
            }
        } catch (final IOException e) {
            KarafUIPluginActivator.getLogger().error("Uable to load file", e);
        } catch (final CoreException e) {
            KarafUIPluginActivator.getLogger().error("Unable to initialize launch configuration tab", e);
            return;
        } finally {
            if (fin != null) {
                try {
                    fin.close();
                } catch (final IOException e) {
                    // Nothing to do here
                }
            }
        }
    }