/**
  * ActionListener
  *
  * @param e event
  */
 @Override
 public void actionPerformed(ActionEvent e) {
   try {
     actionPerformed0(e);
   } catch (Exception ex) {
     clientUI.warn(m_WindowNo, ex);
   }
 }
  /**
   * Product Attribute Instance Dialog
   *
   * @param frame parent frame
   * @param M_AttributeSetInstance_ID Product Attribute Set Instance id
   * @param M_Product_ID Product id
   * @param C_BPartner_ID b partner
   * @param productWindow this is the product window (define Product Instance)
   * @param AD_Column_ID column
   * @param WindowNo window
   */
  public VPAttributeDialog(
      final Frame frame,
      final int M_AttributeSetInstance_ID,
      final int M_Product_ID,
      final boolean productWindow,
      final int AD_Column_ID,
      final IVPAttributeContext attributeContext) {
    super(
        frame,
        Services.get(IMsgBL.class).translate(Env.getCtx(), "M_AttributeSetInstance_ID"),
        true);

    log.config(
        "M_AttributeSetInstance_ID="
            + M_AttributeSetInstance_ID
            + ", M_Product_ID="
            + M_Product_ID
            + ", IsProductWindow="
            + productWindow
            + ", Column="
            + AD_Column_ID);

    m_WindowNo = Env.createWindowNo(this);
    // m_M_AttributeSetInstance_ID = M_AttributeSetInstance_ID;
    m_M_Product_ID = M_Product_ID;
    m_productWindow = productWindow;
    m_AD_Column_ID = AD_Column_ID;
    this.attributeContext = attributeContext;

    //
    // Initialize
    try {
      jbInit();

      // Dynamic Init
      asiTemplate = loadASITemplate(M_AttributeSetInstance_ID);
      if (asiTemplate == null) {
        dispose();
        return;
      }

      // Init all UI editors and fields based on ASI template
      initAttributes();

      AEnv.showCenterWindow(frame, this);
    } catch (Exception ex) {
      clientUI.error(m_WindowNo, ex);
      dispose();
    }
  } // VPAttributeDialog