/**
   * Create an 'empty' BootDashViewModel with no run targets. Targets can be added by adding them to
   * the runTarget's LiveSet.
   */
  public BootDashViewModel(BootDashModelContext context, RunTargetType... runTargetTypes) {
    runTargets = new LiveSet<RunTarget>(new LinkedHashSet<RunTarget>());
    models = new BootDashModelManager(context, runTargets);

    manager = new RunTargetPropertiesManager(context, runTargetTypes);
    List<RunTarget> existingtargets = manager.getStoredTargets();
    runTargets.addAll(existingtargets);
    runTargets.addListener(manager);

    this.runTargetTypes = new LinkedHashSet<RunTargetType>(Arrays.asList(runTargetTypes));
    filterBox = new TagFilterBoxModel();
    toggleFiltersModel = new ToggleFiltersModel();
    filter = Filters.compose(filterBox.getFilter(), toggleFiltersModel.getFilter());
    devtoolsProcessTracker = DevtoolsUtil.createProcessTracker(this);
  }
 public void updatePropertiesInStore(RunTargetWithProperties target) {
   // For now, only properties for secure storage can be updated (e.g. credentials for the run
   // target)
   manager.secureStorage(target.getTargetProperties());
 }