QueryBuilder(Main_Frame parent, String path, ArrayList<String> tableNames) {
    // Constructor Instances.
    String pathDirectory, localeDirectory;
    MenuActionListener pluginMenuListener;

    // Setup the Main panel and the plugin's components.

    queryBuilderMainPanel = new JPanel(new BorderLayout());

    // file & http, locale resource not in jar
    pathDirectory = path + "/" + "QueryBuilder" + "/";
    localeDirectory = "locale/";
    imagesDirectory = "images/icons/";

    // file & http, locale resource in jar
    // pathDirectory = path + "/" + "QueryBuilder.jar";
    // localeDirectory = "lib/plugins/QueryBuilder/locale/";
    // imagesDirectory = "lib/plugins/QueryBuilder/images/icons/";

    resourceBundle = new AResourceBundle(pathDirectory, Ajqvue.getDebug());
    resourceBundle.setLocaleResource(localeDirectory, "QueryBuilder", Ajqvue.getLocaleString());

    tabIcon = resourceBundle.getResourceImage(imagesDirectory + "queryBuilderIcon.png");

    // QueryBuilder Pane.
    queryBuilderPane = new QueryBuilderPane(imagesDirectory, resourceBundle, tableNames);
    queryBuilderPane.setBorder(BorderFactory.createLoweredBevelBorder());
    queryBuilderMainPanel.add(queryBuilderPane, BorderLayout.CENTER);

    // Setup the MenuBar and ToolBar to be used by the plugin.

    pluginMenuListener = new MenuActionListener(parent, queryBuilderPane, resourceBundle);
    menuBar = new QueryBuilder_MenuBar(parent, resourceBundle, pluginMenuListener);
    toolBar =
        new QueryBuilder_ToolBar(
            "QueryBuilder ToolBar", parent, imagesDirectory, resourceBundle, pluginMenuListener);
  }
  private boolean insertData(FX_Series fx_series, String chartType, Object[] content) {
    try {
      // <Number, Number>
      if (chartType.equals(JavaFX_Charts.LINE_CHART)
          || chartType.equals(JavaFX_Charts.AREA_CHART)
          || chartType.equals(JavaFX_Charts.SCATTER_CHART))
        fx_series.addDataPoint(
            Double.valueOf((String) content[0]), Double.valueOf((String) content[1]));

      // <Number, Number>/<Number, Number, Number>
      else if (chartType.equals(JavaFX_Charts.BUBBLE_CHART)) {
        if (content.length <= 2)
          fx_series.addDataPoint(
              Double.valueOf((String) content[0]), Double.valueOf((String) content[1]));
        else
          fx_series.addDataPoint(
              Double.valueOf((String) content[0]),
              Double.valueOf((String) content[1]),
              Double.valueOf((String) content[2]));
      }

      // <String, Number>
      else if (chartType.equals(JavaFX_Charts.CATEGORY_LINE_CHART)
          || chartType.equals(JavaFX_Charts.BAR_CHART)
          || chartType.equals(JavaFX_Charts.PIE_CHART))
        fx_series.addDataPoint((String) content[0], Double.valueOf((String) content[1]));

      // <Number, String>
      else fx_series.addDataPoint(Double.valueOf((String) content[0]), (String) content[1]);
    } catch (NumberFormatException ne) {
      if (Ajqvue.getDebug()) System.out.println("LoadSQLData insertData() " + ne.getMessage());

      return false;
    }
    return true;
  }