2015年

12月

08日

【iDempiere Lab】プロセスからForm Windowへズームする方法

 フォームウィンドウは、1レコードを複数行に表示できる私が作成したプラグインです。

 フォームウィンドウは基本的にはフォームなのでズームはできないのですが、標準ソースをちょっといじれば、プロセスからズームさせる事ができたので、備忘録としてその方法をメモしておきます。

TabbedDesktopクラスにメソッドを追加

public void openJPiereFormWindow(ADForm form, String title)
{
        DesktopTabpanel tabPanel = new DesktopTabpanel();
        form.setParent(tabPanel);
        form.setTitle(null);
        preOpenNewTab();
        windowContainer.addWindow(tabPanel, title, true, null);
        form.focus();  

サンプルプロセス

package idempiere.lab.plugin.process;

 

import jpiere.plugin.webui.adwindow.JPiereADWindow;

 

import org.adempiere.util.Callback;

import org.adempiere.util.IProcessUI;

import org.adempiere.webui.desktop.TabbedDesktop;

import org.adempiere.webui.panel.CustomForm;

import org.adempiere.webui.session.SessionManager;

import org.compiere.model.MQuery;

import org.compiere.process.SvrProcess;

import org.compiere.util.Env;

 

public class OpenFormWindowProcess extends SvrProcess {

  

@Override

protected void prepare() {

 

}

 

@Override

protected String doIt() throws Exception {

 

    IProcessUI processUI = Env.getProcessUI(getCtx());

    processUI.ask("ズームしますか?", new Callback<Boolean>() {

 

        @Override

        public void onCallback(Boolean result)

        {

             if (result)

            {

               int AD_Window_ID = 1000004;

               int Record_ID = 1000072;

 

               MQuery query = new MQuery("C_Order");

               query.addRestriction("C_Order_ID=" + Record_ID);

 

               CustomForm form = new CustomForm();

               JPiereADWindow adw = new JPiereADWindow(Env.getCtx(), AD_Window_ID, query);//Ctx, AD_Window_ID,MQuery

               adw.createPart(form);

 

               TabbedDesktop tabbedDesktop = (TabbedDesktop)SessionManager.getAppDesktop();

               tabbedDesktop.openJPiereFormWindow(form,"タブのタイトル");

            }else{

                ;//Nothing to do;

            }

          }

        });//processUI.ask

         return null;

    }

 

}