/******************************************************************************
* Product: Compiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.compiere.apps;
import java.awt.*;
import java.awt.event.*;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.event.*;
import org.compiere.apps.form.CopyBOM;
import org.compiere.apps.form.CreateMaterialUseLine;
//import org.compiere.apps.form.FPackageApplyCovertInvoice;
//import org.compiere.apps.form.FSalesOrderCovertInvoice;
import org.compiere.apps.form.FPackageApplyConvertLoadPlan;
import org.compiere.apps.form.FPackageApplyCovertInvoice;
import org.compiere.apps.form.FSalesOrderConvertPackageApply;
import org.compiere.apps.form.FSalesOrderCovertInvoice;
import org.compiere.apps.form.FormFrame;
import org.compiere.apps.form.GetMaterial;
import org.compiere.apps.form.VBPartnerSelect;
import org.compiere.apps.form.VCreateFromProduction;
import org.compiere.apps.form.VInventoryFileImport;
import org.compiere.apps.form.VInvoiceConvertAllocate;
import org.compiere.apps.form.VMDLSelectOrder;
import org.compiere.apps.form.VMDLSelectPlan;
import org.compiere.apps.form.VProductSheet;
import org.compiere.apps.form.ViewQtyOrdered;
import org.compiere.apps.form.ViewQtyUseReserve;
//import org.compiere.apps.form.ViewGenInvoice;
import org.compiere.apps.search.*;
import org.compiere.grid.*;
import org.compiere.grid.ed.*;
import org.compiere.model.*;
import org.compiere.plaf.*;
import org.compiere.print.*;
import org.compiere.process.*;
import org.compiere.swing.*;
import org.compiere.util.*;
/**
* Main Application Panel.
*
* <pre>
* Structure:
* (MenuBar) -> to be added to owning window
* northPanel (ToolBar)
* tabPanel
* southPanel (StatusBar)
* </pre>
*
* @author Jorg Janke
* @version $Id: APanel.java,v 1.4 2006/07/30 00:51:27 jjanke Exp $
*/
public final class APanel extends CPanel implements DataStatusListener,
ChangeListener, ActionListener, ASyncProcess {
/**
* Constructs a new instance. Need to call initPanel for dynamic
* initialization
*/
public APanel() {
super();
m_ctx = Env.getCtx();
//
try {
jbInit();
} catch (Exception e) {
log.log(Level.SEVERE, "", e);
}
createMenu();
} // APanel
/** Logger */
private static CLogger log = CLogger.getCLogger(APanel.class);
/**
* Dispose
*/
public void dispose() {
// log.config("");
// ignore changes
m_disposing = true;
//
if (m_curAPanelTab != null) {
m_curAPanelTab.unregisterPanel();
m_curAPanelTab = null;
}
// close panels
tabPanel.dispose(this);
tabPanel = null;
// All Workbenches
for (int i = 0; i < m_mWorkbench.getWindowCount(); i++) {
m_curWindowNo = m_mWorkbench.getWindowNo(i);
log.info("#" + m_curWindowNo);
Env.setAutoCommit(m_ctx, m_curWindowNo, false);
m_mWorkbench.dispose(i);
Env.clearWinContext(m_ctx, m_curWindowNo);
} // all Workbenchens
// Get rid of remaining model
if (m_mWorkbench != null)
m_mWorkbench.dispose();
m_mWorkbench = null;
// MenuBar
if (menuBar != null)
menuBar.removeAll();
menuBar = null;
// ToolBar
if (toolBar != null)
toolBar.removeAll();
toolBar = null;
// Prepare GC
this.removeAll();
} // dispose
/**
* The Layout.
*/
private BorderLayout mainLayout = new BorderLayout();
private VTabbedPane tabPanel = new VTabbedPane(true);
private StatusBar statusBar = new StatusBar();
private CPanel northPanel = new CPanel();
private JToolBar toolBar = new JToolBar();
private JMenuBar menuBar = new JMenuBar();
private FlowLayout northLayout = new FlowLayout();
/**
* Initializes the state of this instance.
*
* @throws Exception
*/
private void jbInit() throws Exception {
this.setLocale(Language.getLoginLanguage().getLocale());
this.setLayout(mainLayout);
// tabPanel
mainLayout.setHgap(2);
mainLayout.setVgap(2);
this.add(tabPanel, BorderLayout.CENTER);
// southPanel
this.add(statusBar, BorderLayout.SOUTH);
// northPanel
this.add(northPanel, BorderLayout.NORTH);
northPanel.setLayout(northLayout);
northLayout.setAlignment(FlowLayout.LEFT);
northPanel.add(toolBar, null);
} // jbInit
private AppsAction aPrevious, aNext, aParent, aDetail, aFirst, aLast, aNew,
aCopy, aDelete, aIgnore, aPrint, aRefresh, aHistory, aAttachment,
aChat, aMulti, aFind, aWorkflow, aZoomAcross, aRequest, aWinSize,
aArchive;
/** Save Button */
public AppsAction aSave;
/** Private Lock Button */
public AppsAction aLock;
// Local (added to toolbar)
private AppsAction aReport, aEnd, aHome, aHelp, aProduct, aExit
/** Start add by kangmin 20080611 598 在窗口工具栏增加打印第三方报表按钮*/
,lReport
/** end add by kangmin 20080611 598 在窗口工具栏增加打印第三方报表按钮*/
;
/***************************************************************************
* Create Menu and Toolbar and registers keyboard actions. - started from
* constructor
*/
private void createMenu() {
/**
* Menu
*/
// menuBar.setHelpMenu();
// File
JMenu mFile = AEnv.getMenu("File");
menuBar.add(mFile);
addAction("PrintScreen", mFile, KeyStroke.getKeyStroke(
KeyEvent.VK_PRINTSCREEN, 0), false);
addAction("ScreenShot", mFile, KeyStroke.getKeyStroke(
KeyEvent.VK_PRINTSCREEN, Event.SHIFT_MASK), false);
aReport = addAction("Report", mFile, KeyStroke.getKeyStroke(
KeyEvent.VK_F11, 0), false);
/** Start add by kangmin 20080611 598 在窗口工具栏增加打印第三方报表按钮*/
lReport = addAction("PrintReport", mFile, KeyStroke.getKeyStroke(
KeyEvent.VK_F10, 0), false);
/** end add by kangmin 20080611 598 在窗口工具栏增加打印第三方报表按钮*/
aPrint = addAction("Print", mFile, KeyStroke.getKeyStroke(
KeyEvent.VK_F12, 0), false);
mFile.addSeparator();
aEnd = addAction("End", mFile, KeyStroke.getKeyStroke(KeyEvent.VK_X,
Event.ALT_MASK), false);
aExit = addAction("Exit", mFile, KeyStroke.getKeyStroke(KeyEvent.VK_X,
Event.SHIFT_MASK + Event.ALT_MASK), false);
// Edit
JMenu mEdit = AEnv.getMenu("Edit");
menuBar.add(mEdit);
aNew = addAction("New", mEdit, KeyStroke
.getKeyStroke(KeyEvent.VK_F2, 0), false);
aSave = addAction("Save", mEdit, KeyStroke.getKeyStroke(KeyEvent.VK_F4,
0), false);
mEdit.addSeparator();
aCopy = addAction("Copy", mEdit, KeyStroke.getKeyStroke(KeyEvent.VK_F2,
Event.SHIFT_MASK), false);
aDelete =