Ejemplo n.º 1
0
  /**
   * Adds a FunctionPanel.
   *
   * @param name a descriptive name
   * @param panel the FunctionPanel
   * @return the added panel
   */
  @Override
  public FunctionPanel addPanel(String name, FunctionPanel panel) {
    super.addPanel(name, panel);

    // autoload data functions, if any, for this track type
    Class<?> trackType = null;
    try {
      trackType = Class.forName(panel.getDescription());
    } catch (ClassNotFoundException ex) {
    }
    // load from Strings read from tracker.prefs (deprecated Dec 2014)
    for (String xml : Tracker.dataFunctionControlStrings) {
      XMLControl control = new XMLControlElement(xml);
      // determine what track type the control is for
      Class<?> controlTrackType = null;
      try {
        controlTrackType = Class.forName(control.getString("description")); // $NON-NLS-1$);
      } catch (Exception ex) {
      }

      if (controlTrackType == trackType) {
        control.loadObject(panel);
      }
    }

    // load from XMLControls autoloaded from XML files in search paths
    for (String path : Tracker.dataFunctionControls.keySet()) {
      ArrayList<XMLControl> controls = Tracker.dataFunctionControls.get(path);
      for (XMLControl control : controls) {
        // determine what track type the control is for
        Class<?> controlTrackType = null;
        try {
          controlTrackType = Class.forName(control.getString("description")); // $NON-NLS-1$);
        } catch (Exception ex) {
        }

        if (controlTrackType == trackType) {
          // copy the control for modification if any functions are autoload_off
          XMLControl copyControl = new XMLControlElement(control);
          eliminateExcludedFunctions(copyControl, path);
          // change duplicate function names without requiring user confirmation
          FunctionEditor editor = panel.getFunctionEditor();
          boolean confirmChanges = editor.getConfirmChanges();
          editor.setConfirmChanges(false);
          copyControl.loadObject(panel);
          editor.setConfirmChanges(confirmChanges);
        }
      }
    }

    return panel;
  }