Enhance to allow zooming to any level ( tested zooming from gl journal to the period tab in the calendar-year-period window )

Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2887701
This commit is contained in:
Heng Sin Low 2010-02-01 10:36:39 +00:00
parent 47022f6791
commit f06f95ad72
3 changed files with 350 additions and 263 deletions

View File

@ -33,7 +33,9 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import java.util.Vector;
import java.util.logging.Level;
@ -113,7 +115,7 @@ import org.compiere.util.Util;
*
* @author Jorg Janke
* @version $Id: APanel.java,v 1.4 2006/07/30 00:51:27 jjanke Exp $
*
*
* Colin Rooney 2007/03/20 RFE#1670185 & related BUG#1684142 - Extend Sec to Info Queries
* @contributor Victor Perez , e-Evolution.SC FR [ 1757088 ]
* @contributor fer_luck@centuryon.com , FR [ 1757088 ]
@ -127,13 +129,13 @@ import org.compiere.util.Util;
* @author Teo Sarca, teo.sarca@gmail.com
* <li>BF [ 2876892 ] Save included tab before calling button action
* https://sourceforge.net/tracker/?func=detail&aid=2876892&group_id=176962&atid=879332
* @author victor.perez@e-evolution.com
* @author victor.perez@e-evolution.com
* @see FR [ 1966328 ] New Window Info to MRP and CRP into View http://sourceforge.net/tracker/index.php?func=detail&aid=1966328&group_id=176962&atid=879335
* @autor tobi42, metas GmBH
* <li>BF [ 2799362 ] You can press New button a lot of times
* @author Cristina Ghita, www.arhipac.ro
* @see FR [ 2877111 ] See identifiers columns when delete records https://sourceforge.net/tracker/?func=detail&atid=879335&aid=2877111&group_id=176962
*
*
* @author hengsin, hengsin.low@idalica.com
* @see FR [2887701] https://sourceforge.net/tracker/?func=detail&atid=879335&aid=2887701&group_id=176962
* @sponsor www.metas.de
@ -142,12 +144,12 @@ public final class APanel extends CPanel
implements DataStatusListener, ChangeListener, ActionListener, ASyncProcess
{
/**
*
*
*/
private static final long serialVersionUID = 6066778919781303581L;
private boolean isNested = false;
/**
* Constructs a new instance.
* Need to call initPanel for dynamic initialization
@ -161,7 +163,7 @@ public final class APanel extends CPanel
m_curGC = gc;
gc.addDataStatusListener(this);
m_curTab = gc.getMTab();
Component tabElement = null;
tabElement = gc;
VTabbedPane tabPane = new VTabbedPane(false);
@ -174,20 +176,20 @@ public final class APanel extends CPanel
catch(Exception e){
log.log(Level.SEVERE, "", e);
}
createMenu();
MRole role = MRole.getDefault();
MRole role = MRole.getDefault();
m_curGC.query (m_onlyCurrentRows, m_onlyCurrentDays, role.getMaxQueryRecords());
m_curTab.navigateCurrent(); // updates counter
m_curGC.dynamicDisplay(0);
}
public APanel(AWindow window)
{
super();
m_window = window;
m_ctx = Env.getCtx();
//
try
@ -203,7 +205,7 @@ public final class APanel extends CPanel
/** Logger */
private static CLogger log = CLogger.getCLogger(APanel.class);
private AWindow m_window;
private boolean isCancel = false; //Goodwill
@ -291,7 +293,7 @@ public final class APanel extends CPanel
northLayout.setAlignment(FlowLayout.LEFT);
toolBar.putClientProperty("JToolBar.isRollover", Boolean.TRUE);
toolBar.setBorderPainted(false);
toolBar.setFloatable(false); // teo_sarca, [ 1666591 ] Toolbar should not be floatable
toolBar.setFloatable(false); // teo_sarca, [ 1666591 ] Toolbar should not be floatable
northPanel.add(toolBar, null);
} // jbInit
@ -309,9 +311,9 @@ public final class APanel extends CPanel
// Local (added to toolbar)
private AppsAction aReport, aEnd, aHome, aHelp, aProduct, aLogout,
aAccount, aCalculator, aCalendar, aEditor, aPreference, aScript,
aOnline, aMailSupport, aAbout, aPrintScr, aScrShot, aExit, aBPartner,
aOnline, aMailSupport, aAbout, aPrintScr, aScrShot, aExit, aBPartner,
aDeleteSelection, aShowAllWindow;
private SwitchAction aSwitchLinesDownAction, aSwitchLinesUpAction;
private WindowMenu m_WindowMenu;
@ -354,7 +356,7 @@ public final class APanel extends CPanel
aRefresh = addAction("Refresh", mEdit, KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), false);
mEdit.addSeparator();
aFind = addAction("Find", mEdit, KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), true); // toggle
if (m_isPersonalLock)
if (m_isPersonalLock)
aLock = addAction("Lock", mEdit, null, true); // toggle
// View
JMenu mView = AEnv.getMenu("View");
@ -363,7 +365,7 @@ public final class APanel extends CPanel
{
aProduct = addAction("InfoProduct", mView, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.ALT_MASK), false);
}
if (MRole.getDefault().isAllow_Info_BPartner())
if (MRole.getDefault().isAllow_Info_BPartner())
{
aBPartner = addAction("InfoBPartner", mView, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.SHIFT_MASK+Event.ALT_MASK), false);
}
@ -373,48 +375,48 @@ public final class APanel extends CPanel
}
if (MRole.getDefault().isAllow_Info_Schedule())
{
AEnv.addMenuItem("InfoSchedule", null, null, mView, this);
AEnv.addMenuItem("InfoSchedule", null, null, mView, this);
}
//FR [ 1966328 ]
//FR [ 1966328 ]
if (MRole.getDefault().isAllow_Info_MRP())
{
AEnv.addMenuItem("InfoMRP", "Info", null, mView, this);
AEnv.addMenuItem("InfoMRP", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_CRP())
{
AEnv.addMenuItem("InfoCRP", "Info", null, mView, this);
AEnv.addMenuItem("InfoCRP", "Info", null, mView, this);
}
mView.addSeparator();
if (MRole.getDefault().isAllow_Info_Order())
{
AEnv.addMenuItem("InfoOrder", "Info", null, mView, this);
AEnv.addMenuItem("InfoOrder", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_Invoice())
{
AEnv.addMenuItem("InfoInvoice", "Info", null, mView, this);
AEnv.addMenuItem("InfoInvoice", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_InOut())
{
AEnv.addMenuItem("InfoInOut", "Info", null, mView, this);
AEnv.addMenuItem("InfoInOut", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_Payment())
{
AEnv.addMenuItem("InfoPayment", "Info", null, mView, this);
AEnv.addMenuItem("InfoPayment", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_CashJournal())
{
AEnv.addMenuItem("InfoCashLine", "Info", null, mView, this);
AEnv.addMenuItem("InfoCashLine", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_Resource())
{
AEnv.addMenuItem("InfoAssignment", "Info", null, mView, this);
AEnv.addMenuItem("InfoAssignment", "Info", null, mView, this);
}
if (MRole.getDefault().isAllow_Info_Asset())
{
AEnv.addMenuItem("InfoAsset", "Info", null, mView, this);
AEnv.addMenuItem("InfoAsset", "Info", null, mView, this);
}
mView.addSeparator();
aAttachment = addAction("Attachment", mView, KeyStroke.getKeyStroke(KeyEvent.VK_F7, 0), true); // toggle
@ -455,13 +457,13 @@ public final class APanel extends CPanel
mTools.addSeparator();
aPreference = addAction("Preference", mTools, null, false);
}
//Window
AMenu aMenu = (AMenu)Env.getWindow(0);
m_WindowMenu = new WindowMenu(aMenu.getWindowManager(), m_window);
menuBar.add(m_WindowMenu);
aShowAllWindow = addAction("ShowAllWindow", null, KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK), false);
// Help
JMenu mHelp = AEnv.getMenu("Help");
menuBar.add(mHelp);
@ -547,7 +549,7 @@ public final class APanel extends CPanel
// String s = null;
// if (b != null)
// s = b.getToolTipText();
// Key Strokes
if (accelerator != null)
{
@ -621,7 +623,7 @@ public final class APanel extends CPanel
private HashMap<Integer, GridController> includedMap;
/**************************************************************************
* Dynamic Panel Initialization - either single window or workbench.
* <pre>
@ -663,7 +665,8 @@ public final class APanel extends CPanel
}
Dimension windowSize = m_mWorkbench.getWindowSize();
MQuery detailQuery = null;
/**
* WorkBench Loop
*/
@ -740,6 +743,16 @@ public final class APanel extends CPanel
// initial user query for single workbench tab
if (m_mWorkbench.getWindowCount() == 1)
{
if (query != null && query.getZoomTableName() != null && query.getZoomColumnName() != null
&& query.getZoomValue() instanceof Integer && (Integer)query.getZoomValue() > 0)
{
if (!query.getZoomTableName().equalsIgnoreCase(gTab.getTableName()))
{
detailQuery = query;
query = new MQuery();
query.addRestriction("1=2");
}
}
isCancel = false; //Goodwill
query = initialQuery (query, gTab);
if (isCancel) return false; //Cancel opening window
@ -793,18 +806,18 @@ public final class APanel extends CPanel
// If we have a zoom query, switch to single row
if (tab == 0 && goSingleRow)
gc.switchSingleRow();
// FR [ 1757088 ]
GridField[] fields = gc.getMTab().getFields();
int m_tab_id = 0;
for(int f =0 ; f < fields.length ; f ++)
{
m_tab_id = fields[f].getIncluded_Tab_ID();
m_tab_id = fields[f].getIncluded_Tab_ID();
if ( m_tab_id != 0)
{
includedMap.put(m_tab_id, gc);
}
}
}
// Is this tab included?
if (includedMap.size() > 0)
@ -817,7 +830,7 @@ public final class APanel extends CPanel
GridSynchronizer synchronizer = new GridSynchronizer(mWindow, parent, gc);
if (parent == m_curGC)
synchronizer.activateChild();
included = parent.includeTab(gc,this,synchronizer);
included = parent.includeTab(gc,this,synchronizer);
}
}
initSwitchLineAction();
@ -878,11 +891,11 @@ public final class APanel extends CPanel
setPreferredSize(windowSize);
else
revalidate();
if (zoomToDetailTab(query)) {
return true;
if (detailQuery != null && zoomToDetailTab(detailQuery)) {
return true;
}
Dimension size = getPreferredSize();
log.info( "fini - " + size);
m_curWinTab.requestFocusInWindow();
@ -902,58 +915,12 @@ public final class APanel extends CPanel
gTab = m_mWorkbench.getMWindow(0).getTab(tab);
if (gTab.isSortTab())
continue;
if (gTab.getTabLevel() == 1 && gTab.getTableName().equalsIgnoreCase(query.getZoomTableName()))
if (gTab.getTableName().equalsIgnoreCase(query.getZoomTableName()))
{
GridField[] fields = gTab.getFields();
for (GridField field : fields)
{
if (field.getColumnName().equalsIgnoreCase(query.getZoomColumnName()))
{
if (query.getZoomValue() != null && query.getZoomValue() instanceof Integer)
{
if (!includedMap.containsKey(gTab.getAD_Tab_ID()))
{
m_mWorkbench.getMWindow(0).initTab(tab);
int index = tabPanel.findTabindex(gTab);
if (index >= 0)
{
GridController gc = (GridController) tabPanel.getComponentAt(index);
gc.activate();
gc.query(false, 0, 0);
}
}
GridTable table = gTab.getTableModel();
int count = table.getRowCount();
for(int i = 0; i < count; i++)
{
int id = table.getKeyID(i);
if (id == ((Integer)query.getZoomValue()).intValue())
{
if (!includedMap.containsKey(gTab.getAD_Tab_ID()))
{
int index = tabPanel.findTabindex(gTab);
if (index >= 0)
tabPanel.setSelectedIndex(index);
}
gTab.navigate(i);
return true;
}
}
}
else
{
if (!includedMap.containsKey(gTab.getAD_Tab_ID()))
{
int index = tabPanel.findTabindex(gTab);
if (index >= 0)
tabPanel.setSelectedIndex(index);
}
return true;
}
break;
}
}
if (doZoomToDetail(gTab, query, tab)) {
return true;
}
}
}
}
@ -961,6 +928,109 @@ public final class APanel extends CPanel
return false;
}
private boolean doZoomToDetail(GridTab gTab, MQuery query, int tabIndex) {
GridField[] fields = gTab.getFields();
for (GridField field : fields)
{
if (field.getColumnName().equalsIgnoreCase(query.getZoomColumnName()))
{
m_mWorkbench.getMWindow(0).initTab(tabIndex);
int parentId = DB.getSQLValue(null, "SELECT " + gTab.getLinkColumnName() + " FROM " + gTab.getTableName() + " WHERE " + query.getWhereClause());
if (parentId > 0)
{
Map<Integer, Object[]>parentMap = new TreeMap<Integer, Object[]>();
int index = tabIndex;
int oldpid = parentId;
GridTab currentTab = gTab;
while (index > 0)
{
index--;
GridTab pTab = m_mWorkbench.getMWindow(0).getTab(index);
if (pTab.getTabLevel() < currentTab.getTabLevel())
{
m_mWorkbench.getMWindow(0).initTab(index);
if (index > 0)
{
if (pTab.getLinkColumnName() != null && pTab.getLinkColumnName().trim().length() > 0)
{
int pid = DB.getSQLValue(null, "SELECT " + pTab.getLinkColumnName() + " FROM " + pTab.getTableName() + " WHERE " + currentTab.getLinkColumnName() + " = ?", oldpid);
if (pid > 0)
{
parentMap.put(index, new Object[]{currentTab.getLinkColumnName(), oldpid});
oldpid = pid;
currentTab = pTab;
}
else
{
parentMap.clear();
break;
}
}
}
else
{
parentMap.put(index, new Object[]{currentTab.getLinkColumnName(), oldpid});
}
}
}
for(Map.Entry<Integer, Object[]> entry : parentMap.entrySet())
{
GridTab pTab = m_mWorkbench.getMWindow(0).getTab(entry.getKey());
Object[] value = entry.getValue();
MQuery pquery = new MQuery(pTab.getAD_Table_ID());
pquery.addRestriction((String)value[0], "=", value[1]);
pTab.setQuery(pquery);
GridController gc = (GridController) tabPanel.getComponentAt(entry.getKey());
gc.activate();
gc.query(false, 0, 0);
}
MQuery targetQuery = new MQuery(gTab.getAD_Table_ID());
targetQuery.addRestriction(gTab.getLinkColumnName(), "=", parentId);
gTab.setQuery(targetQuery);
GridController gc = null;
if (!includedMap.containsKey(gTab.getAD_Tab_ID()))
{
int target = tabPanel.findTabindex(gTab);
gc = (GridController) tabPanel.getComponentAt(target);
}
else
{
GridController parent = includedMap.get(gTab.getAD_Tab_ID());
gc = parent.findChild(gTab);
}
gc.activate();
gc.query(false, 0, 0);
GridTable table = gTab.getTableModel();
int count = table.getRowCount();
for(int i = 0; i < count; i++)
{
int id = table.getKeyID(i);
if (id == ((Integer)query.getZoomValue()).intValue())
{
if (!includedMap.containsKey(gTab.getAD_Tab_ID()))
{
tabPanel.setSelectedIndex(tabPanel.findTabindex(gTab));
}
else
{
GridController parent = includedMap.get(gTab.getAD_Tab_ID());
int pindex = tabPanel.findTabindex(parent.getMTab());
if (pindex >= 0)
tabPanel.setSelectedIndex(pindex);
}
gTab.navigate(i);
return true;
}
}
}
}
}
return false;
}
/**
* Get Current Window No
* @return win no
@ -969,7 +1039,7 @@ public final class APanel extends CPanel
{
return m_curWindowNo;
} // getWindowNo
/**
* Initial Query
* @param query initial query
@ -1014,7 +1084,7 @@ public final class APanel extends CPanel
{
GridField[] findFields = mTab.getFields();
Find find = new Find (Env.getFrame(this), m_curWindowNo, mTab.getName(),
mTab.getAD_Tab_ID(), mTab.getAD_Table_ID(), mTab.getTableName(),
mTab.getAD_Tab_ID(), mTab.getAD_Table_ID(), mTab.getTableName(),
where.toString(), findFields, 10); // no query below 10
query = find.getQuery();
isCancel = (query == null);//Goodwill
@ -1023,8 +1093,8 @@ public final class APanel extends CPanel
}
return query;
} // initialQuery
/**
* Get Window Index
* @return Window Index
@ -1055,8 +1125,8 @@ public final class APanel extends CPanel
{
return m_mWorkbench.getImage(getWindowIndex());
} // getImage
/**************************************************************************
* Data Status Listener (row change) ^ | v
* @param e event
@ -1119,11 +1189,11 @@ public final class APanel extends CPanel
aLast.setEnabled(!lastRow);
// update Change
boolean changed = e.isChanged() || e.isInserting();
int changedColumn = e.getChangedColumn();
boolean inserting = e.isInserting();
if(e.getAD_Message() != null && e.getAD_Message().equals("Saved"))
changed = false;
boolean readOnly = m_curTab.isReadOnly();
@ -1231,7 +1301,7 @@ public final class APanel extends CPanel
}
} // set Busy
/**************************************************************************
* Change Listener - (tab change) <->
* @param e event
@ -1325,7 +1395,7 @@ public final class APanel extends CPanel
if( newRecord == -1)
m_curTab.dataIgnore();
else
{
{
m_curWinTab.setSelectedIndex(m_curTabIndex);
setBusy(false, true);
return;
@ -1385,7 +1455,7 @@ public final class APanel extends CPanel
m_curTab.dataRefresh();
else // Requery & autoSize
{
MRole role = MRole.getDefault();
MRole role = MRole.getDefault();
m_curGC.query (m_onlyCurrentRows, m_onlyCurrentDays, role.getMaxQueryRecords());
/*
if (m_curGC.isNeedToSaveParent())
@ -1401,7 +1471,7 @@ public final class APanel extends CPanel
if (m_curTab.getRowCount() == 0)
{
// Automatically create New Record, if none & tab not RO
if (!m_curTab.isReadOnly()
if (!m_curTab.isReadOnly()
&& (Env.isAutoNew(m_ctx, m_curWindowNo) || m_curTab.isQueryNewRecord()))
{
log.config("No record - New - AutoNew=" + Env.isAutoNew(m_ctx, m_curWindowNo)
@ -1426,20 +1496,20 @@ public final class APanel extends CPanel
//not sure why, the following lines is needed to make dynamic resize work
//tested on jdk1.5, 1.6 using jgoodies look and feel
frame.getPreferredSize();
if (frame.getExtendedState() != JFrame.MAXIMIZED_BOTH)
{
frame.setMinimumSize(frame.getSize());
revalidate();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = Env.getFrame(APanel.this);
frame.validate();
AEnv.showCenterScreen(frame);
frame.setMinimumSize(null);
}
});
}
}
@ -1526,7 +1596,7 @@ public final class APanel extends CPanel
m_curGC.acceptEditorChanges();
m_curWinTab.setSelectedIndex(index+1);
}
} // navigateDetail
/**
@ -1563,7 +1633,7 @@ public final class APanel extends CPanel
}
} // navigateParent
/**************************************************************************
* Action Listener
* @param e event
@ -1574,7 +1644,7 @@ public final class APanel extends CPanel
// + " - " + new Timestamp(e.getWhen()) + " " + isUILocked());
if (m_disposing || isUILocked())
return;
m_lastModifiers = e.getModifiers();
String cmd = e.getActionCommand();
// Do ScreenShot w/o busy
@ -1641,7 +1711,7 @@ public final class APanel extends CPanel
m_curGC.switchRowPresentation();
// Go
else if (cmd.equals(aHome.getName())) {
// show main menu - teo_sarca [ 1706409, 1707221 ]
// show main menu - teo_sarca [ 1706409, 1707221 ]
setBusy(false, false);
AEnv.showWindow(Env.getWindow(0));
return;
@ -1652,14 +1722,14 @@ public final class APanel extends CPanel
m_curGC.acceptEditorChanges();
m_curTab.navigate(0);
}
else if (cmd.equals(aSwitchLinesUpAction.getName()))
else if (cmd.equals(aSwitchLinesUpAction.getName()))
{
//up-key + shift
m_curGC.getTable().removeEditor();
m_curTab.switchRows(m_curTab.getCurrentRow(), m_curTab.getCurrentRow() - 1, m_curGC.getTable().getSortColumn(), m_curGC.getTable().isSortAscending());
m_curGC.getTable().requestFocus();
}
else if (cmd.equals(aPrevious.getName()))
}
else if (cmd.equals(aPrevious.getName()))
{ /* cmd_save(false); */
//up-image + shift
m_curGC.getTable().removeEditor();
@ -1669,15 +1739,15 @@ public final class APanel extends CPanel
} else {
m_curTab.navigateRelative(-1);
}
}
else if (cmd.equals(aSwitchLinesDownAction.getName()))
}
else if (cmd.equals(aSwitchLinesDownAction.getName()))
{
//down-key + shift
m_curGC.getTable().removeEditor();
m_curTab.switchRows(m_curTab.getCurrentRow(), m_curTab.getCurrentRow() + 1, m_curGC.getTable().getSortColumn(), m_curGC.getTable().isSortAscending());
m_curGC.getTable().requestFocus();
}
else if (cmd.equals(aNext.getName()))
}
else if (cmd.equals(aNext.getName()))
{ /* cmd_save(false); */
//down-image + shift
m_curGC.getTable().removeEditor();
@ -1746,7 +1816,7 @@ public final class APanel extends CPanel
if (top instanceof AMenu) {
((AMenu)top).logout();
}
}
/**************************************************************************
@ -1767,7 +1837,7 @@ public final class APanel extends CPanel
GridField field = m_curTab.getField(button.getColumnName());
return m_curTab.processCallout(field);
} // processButtonCallout
/**
* Create New Record
* @param copy true if current record is to be copied
@ -1780,10 +1850,10 @@ public final class APanel extends CPanel
log.warning("Insert Record disabled for Tab");
return;
}
m_curGC.stopEditor(true);
m_curGC.acceptEditorChanges();
// BF [ 2799362 ] attempt to save if save action is enabled. Using
// m_curTab.needSave instead might miss unfilled mandatory fields.
if(aSave.isEnabled()){
@ -1791,7 +1861,7 @@ public final class APanel extends CPanel
if (Env.isAutoCommit(m_ctx, m_curWindowNo))
{
if (!cmd_save(true))
{
{
return;
}
}
@ -1799,7 +1869,7 @@ public final class APanel extends CPanel
else if (ADialog.ask(m_curWindowNo, this, "SaveChanges?", m_curTab.getCommitWarning()))
{ // yes we want to save
if (!cmd_save(true))
{
{
return;
}
}
@ -1824,7 +1894,7 @@ public final class APanel extends CPanel
m_curGC.rowChanged(false, keyID);
m_curGC.dynamicDisplay(0);
} // cmd_delete
/**
* Show a list to select one or more items to delete.
*/
@ -1884,10 +1954,10 @@ public final class APanel extends CPanel
}
// FR [ 2877111 ]
list.setListData(data);
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
messagePanel.add(scrollPane);
final JOptionPane pane = new JOptionPane(
messagePanel, // message
JOptionPane.QUESTION_MESSAGE, // messageType
@ -1963,13 +2033,13 @@ public final class APanel extends CPanel
if (!isNested)
m_window.setTitle(getTitle());
}
//BEGIN - [FR 1953734]
if(m_curGC.isDetailGrid() && retValue){
m_curGC.getGCParent().refreshMTab(m_curGC);
}
//END - [FR 1953734]
return retValue;
} // cmd_save
@ -1988,14 +2058,14 @@ public final class APanel extends CPanel
private void cmd_ignore()
{
m_curGC.stopEditor(false);
// Ignore changes in APanelTab (e.g. VSortTab) - teo_sarca [ 1705429 ]
// Ignore changes in APanelTab (e.g. VSortTab) - teo_sarca [ 1705429 ]
if (m_curAPanelTab != null)
{
m_curAPanelTab.loadData();
}
m_curTab.dataIgnore();
m_curGC.dynamicDisplay(0);
} // cmd_ignore
/**
@ -2019,7 +2089,7 @@ public final class APanel extends CPanel
ADialog.error(m_curWindowNo, this, "AccessCannotReport");
return;
}
cmd_save(false);
// Query
@ -2058,7 +2128,7 @@ public final class APanel extends CPanel
new AReport (m_curTab.getAD_Table_ID(), aReport.getButton(), query, this, m_curWindowNo, m_curTab.getWhereExtended());
} // cmd_report
/**
* Zoom Across Menu
*/
@ -2085,10 +2155,10 @@ public final class APanel extends CPanel
query.addRestriction(link, MQuery.EQUAL,
Env.getContext(m_ctx, m_curWindowNo, link));
}
new AZoomAcross (aZoomAcross.getButton(),
new AZoomAcross (aZoomAcross.getButton(),
m_curTab.getTableName(), query);
} // cmd_zoom
/**
* Open/View Request
*/
@ -2120,7 +2190,7 @@ public final class APanel extends CPanel
int AD_Table_ID = m_curTab.getAD_Table_ID();
new AArchive (aArchive.getButton(), AD_Table_ID, record_ID);
} // cmd_archive
/**
* Print specific Report - or start default Report
*/
@ -2128,7 +2198,7 @@ public final class APanel extends CPanel
{
cmd_print(false);
}
/**
* Print specific Report - or start default Report
*/
@ -2169,7 +2239,7 @@ public final class APanel extends CPanel
// Gets Fields from AD_Field_v
GridField[] findFields = GridField.createFields(m_ctx, m_curWindowNo, 0, m_curTab.getAD_Tab_ID());
Find find = new Find (Env.getFrame(this), m_curWindowNo, m_curTab.getName(),
m_curTab.getAD_Tab_ID(), m_curTab.getAD_Table_ID(), m_curTab.getTableName(),
m_curTab.getAD_Tab_ID(), m_curTab.getAD_Table_ID(), m_curTab.getTableName(),
m_curTab.getWhereExtended(), findFields, 1);
MQuery query = find.getQuery();
find.dispose();
@ -2198,7 +2268,7 @@ public final class APanel extends CPanel
return;
}
// Attachment va =
// Attachment va =
new Attachment (Env.getFrame(this), m_curWindowNo,
m_curTab.getAD_AttachmentID(), m_curTab.getAD_Table_ID(), record_ID, null);
//
@ -2234,9 +2304,9 @@ public final class APanel extends CPanel
}
String description = infoName + ": " + infoDisplay;
//
// AChat va =
// AChat va =
new AChat (Env.getFrame(this), m_curWindowNo,
m_curTab.getCM_ChatID(), m_curTab.getAD_Table_ID(), record_ID,
m_curTab.getCM_ChatID(), m_curTab.getAD_Table_ID(), record_ID,
description, null);
//
m_curTab.loadChats(); // reload
@ -2292,10 +2362,10 @@ public final class APanel extends CPanel
m_onlyCurrentRows = false;
//
m_curTab.setQuery(null); // reset previous queries
MRole role = MRole.getDefault();
MRole role = MRole.getDefault();
int maxRows = role.getMaxQueryRecords();
//
log.config("OnlyCurrent=" + m_onlyCurrentRows
log.config("OnlyCurrent=" + m_onlyCurrentRows
+ ", Days=" + m_onlyCurrentDays
+ ", MaxRows=" + maxRows);
m_curGC.query(m_onlyCurrentRows, m_onlyCurrentDays, maxRows ); // autoSize
@ -2342,7 +2412,7 @@ public final class APanel extends CPanel
private void cmd_winSize()
{
Dimension size = getSize();
if (!ADialog.ask(m_curWindowNo, this, "WinSizeSet",
if (!ADialog.ask(m_curWindowNo, this, "WinSizeSet",
"x=" + size.width + " - y=" + size.height))
{
setPreferredSize(null);
@ -2354,13 +2424,13 @@ public final class APanel extends CPanel
win.setWindowSize(size);
win.save();
} // cmdWinSize
private void cmd_export()
{
new AExport(this);
}
/**************************************************************************
* Start Button Process
* @param vButton button
@ -2407,7 +2477,7 @@ public final class APanel extends CPanel
if (record_ID == -1 && m_curTab.getKeyColumnName().equals("AD_Language"))
record_ID = Env.getContextAsInt (m_ctx, m_curWindowNo, "AD_Language_ID");
// Record_ID - Change Log ID
if (record_ID == -1
if (record_ID == -1
&& (vButton.getProcess_ID() == 306 || vButton.getProcess_ID() == 307))
{
Integer id = (Integer)m_curTab.getValue("AD_ChangeLog_ID");
@ -2419,7 +2489,7 @@ public final class APanel extends CPanel
ADialog.error(m_curWindowNo, this, "SaveErrorRowNotFound");
return;
}
boolean isProcessMandatory = false;
// Pop up Payment Rules
@ -2462,7 +2532,7 @@ public final class APanel extends CPanel
// Pop up Create From
else if (col.equals("CreateFrom"))
{
// Run form only if the button has no process defined - teo_sarca [ 1974354 ]
// Run form only if the button has no process defined - teo_sarca [ 1974354 ]
if (vButton.getProcess_ID() <= 0)
{
ICreateFrom cf = VCreateFromFactory.create(m_curTab);
@ -2477,7 +2547,7 @@ public final class APanel extends CPanel
else
cf.closeWindow();
return;
}
}
// else may start process
}
} // CreateFrom
@ -2552,18 +2622,18 @@ public final class APanel extends CPanel
if (m_curTab.needSave(true, false))
if (!cmd_save(true))
return;
// call form
MProcess pr = new MProcess(m_ctx, vButton.getProcess_ID(), null);
int form_ID = pr.getAD_Form_ID();
if (form_ID != 0 )
if (form_ID != 0 )
{
if (m_curTab.needSave(true, false))
if (!cmd_save(true))
return;
FormFrame ff = new FormFrame();
FormFrame ff = new FormFrame();
String title = vButton.getDescription();
if (title == null || title.length() == 0)
title = vButton.getName();
@ -2571,14 +2641,14 @@ public final class APanel extends CPanel
pi.setAD_User_ID (Env.getAD_User_ID(m_ctx));
pi.setAD_Client_ID (Env.getAD_Client_ID(m_ctx));
ff.setProcessInfo(pi);
ff.openForm(form_ID);
ff.pack();
AEnv.showCenterScreen(ff);
return;
}
ff.openForm(form_ID);
ff.pack();
AEnv.showCenterScreen(ff);
return;
}
else {
ProcessModalDialog dialog = new ProcessModalDialog(m_ctx, Env.getWindow(m_curWindowNo), Env.getHeader(m_ctx, m_curWindowNo),
this, m_curWindowNo, vButton.getProcess_ID(), table_ID,
this, m_curWindowNo, vButton.getProcess_ID(), table_ID,
record_ID, startWOasking);
if (dialog.isValidDialog())
{
@ -2589,7 +2659,7 @@ public final class APanel extends CPanel
}
} // actionButton
/**************************************************************************
* Lock User Interface.
* Called from the Worker before processing
@ -2609,13 +2679,13 @@ public final class APanel extends CPanel
public void unlockUI (ProcessInfo pi)
{
// log.fine("" + pi);
boolean notPrint = pi != null
boolean notPrint = pi != null
&& pi.getAD_Process_ID() != m_curTab.getAD_Process_ID()
&& pi.isReportingProcess() == false;
//
setBusy(false, notPrint);
// Process Result
if (notPrint) // refresh if not print
if (notPrint) // refresh if not print
{
// Refresh data
m_curTab.dataRefresh();
@ -2670,7 +2740,7 @@ public final class APanel extends CPanel
{
return m_curTab;
} // getCurrentTab
/**
* Get the number of tabs in the panels JTabbedPane.
* @return no of tabs in the JTabbedPane of the panel
@ -2678,7 +2748,7 @@ public final class APanel extends CPanel
public int noOfTabs() {
return m_curWinTab.getTabCount();
}
/**
* Get the selected tab index of the panels JTabbedPane.
* @return selected index of JTabbedPane
@ -2686,14 +2756,14 @@ public final class APanel extends CPanel
public int getSelectedTabIndex() {
return m_curWinTab.getSelectedIndex();
}
/**
* Set the tab index of the panels JTabbedPane.
*/
public void setSelectedTabIndex(int index) {
m_curWinTab.setSelectedIndex(index);
}
/**
* Get the name of the selected tab in the panels JTabbedPane.
* @return name of selected tab
@ -2704,7 +2774,7 @@ public final class APanel extends CPanel
title = title.substring(0,title.indexOf('<'));
return title;
}
/**
* String representation
* @return String representation
@ -2721,13 +2791,13 @@ public final class APanel extends CPanel
/**
* Simple action class for the resort of tablelines (switch line no). Delegates actionPerformed
* to APanel.
*
*
* @author Karsten Thiemann, kthiemann@adempiere.org
*
*
*/
class SwitchAction extends AbstractAction {
/**
*
*
*/
private static final long serialVersionUID = 3837712049468116744L;
@ -2791,7 +2861,7 @@ public final class APanel extends CPanel
aSwitchLinesUpAction.getName());
getActionMap().put(aSwitchLinesUpAction.getName(), aSwitchLinesUpAction);
}
public boolean isNested() {
return isNested;
}

View File

@ -145,7 +145,7 @@ import org.compiere.util.Trx;
* </pre>
* @author Jorg Janke
* @version $Id: GridController.java,v 1.8 2006/09/25 00:59:52 jjanke Exp $
*
*
* @author Teo Sarca - BF [ 1742159 ], BF [ 1707876 ]
* @contributor Victor Perez , e-Evolution.SC FR [ 1757088 ]
* @contributor fer_luck @ centuryon FR [ 1757088 ]
@ -155,7 +155,7 @@ public class GridController extends CPanel
VetoableChangeListener, PropertyChangeListener, MouseListener
{
/**
*
*
*/
private static final long serialVersionUID = 7308782933999556880L;
@ -185,7 +185,7 @@ public class GridController extends CPanel
/** Logger */
private static CLogger log = CLogger.getCLogger(GridController.class);
/**
* The Layout
*/
@ -196,14 +196,14 @@ public class GridController extends CPanel
private CPanel cardPanel = new CPanel();
private CardLayout cardLayout = new CardLayout();
//private JSplitPane srPane = new JSplitPane();
private JScrollPane vPane = new JScrollPane();
private CScrollPane mrPane = new CScrollPane();
private CPanel xPanel = new CPanel();
private BorderLayout xLayout = new BorderLayout();
private VTable vTable = new VTable();
//FR [ 1757088 ]
private VPanel vPanel = null;
private VPanel vPanel = null;
private boolean detailGrid = false;
/**
@ -226,7 +226,7 @@ public class GridController extends CPanel
cardPanel.add(vPane, "vPane"); // Sequence Important!
cardPanel.add(mrPane, "mrPane");
cardPanel.setBorder(null);
cardPanel.setName("gc_cardPanel");
cardPanel.setName("gc_cardPanel");
// single row (w/o xPane it would be centered)
/*
srPane.setBorder(null);
@ -252,7 +252,7 @@ public class GridController extends CPanel
graphPanel.setBorder(null);
graphPanel.setName("gc_graphPanel");
//srPane.setDividerLocation(200);
vPane.setBorder(BorderFactory.createEmptyBorder());
} // jbInit
@ -330,12 +330,12 @@ public class GridController extends CPanel
private ArrayList<GridSynchronizer> synchronizerList = new ArrayList<GridSynchronizer>();
public boolean initGrid (GridTab mTab, boolean onlyMultiRow,
public boolean initGrid (GridTab mTab, boolean onlyMultiRow,
int WindowNo, APanel aPanel, GridWindow mWindow)
{
return initGrid(mTab, onlyMultiRow, WindowNo, aPanel, mWindow, false);
}
/**************************************************************************
* Init Grid.
* <pre>
@ -351,7 +351,7 @@ public class GridController extends CPanel
* @param mWindow parent Window Model
* @return true if initialized
*/
public boolean initGrid (GridTab mTab, boolean onlyMultiRow,
public boolean initGrid (GridTab mTab, boolean onlyMultiRow,
int WindowNo, APanel aPanel, GridWindow mWindow, boolean lazy)
{
log.config( "(" + mTab.toString() + ")");
@ -371,7 +371,7 @@ public class GridController extends CPanel
xPanel.add(vPanel, BorderLayout.CENTER);
setTabLevel(m_mTab.getTabLevel());
if (!lazy)
init();
else
@ -379,12 +379,12 @@ public class GridController extends CPanel
//Load tab meta data, needed for includeTab to work
m_mTab.initTab(false);
}
// log.config( "GridController.dynInit (" + mTab.toString() + ") - fini");
return true;
} // initGrid
private void init()
{
// Set up Multi Row Table
@ -406,7 +406,7 @@ public class GridController extends CPanel
if (mField.isDisplayed())
vPanel.setMnemonic(mField);
} // for all fields
// Add Fields
for (int i = 0; i < size; i++)
{
@ -481,15 +481,15 @@ public class GridController extends CPanel
switchMultiRow();
else
switchSingleRow();
init = true;
}
/**
*
*
* @return boolean
*/
public boolean isInit()
public boolean isInit()
{
return init;
}
@ -499,15 +499,15 @@ public class GridController extends CPanel
* @param gc grid controller to add
* @return GridSynchronizer
*/
//FR [ 1757088 ]
public boolean includeTab (GridController gc , APanel aPanel, GridSynchronizer sync)
{
{
GridController detail = gc;
detail.setDetailGrid(true);
detail.setDetailGrid(true);
detail.addMouseListener(detail);
detail.enableEvents(AWTEvent.HIERARCHY_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK);
vPanel.includeTab(detail);
//BEGIN - [FR 1953734]
gc.setGCParent(this);
@ -523,7 +523,7 @@ public class GridController extends CPanel
if (detailGrid && vPanel != null)
vPanel.setBorder(BorderFactory.createLineBorder(AdempierePLAF.getPrimary2()));
}
public boolean isDetailGrid(){
return detailGrid;
}
@ -535,7 +535,7 @@ public class GridController extends CPanel
{
return m_mTab.getName();
} // getTitle
/**
* Setup Multi-Row Table (add fields)
* @param aPanel Panel
@ -561,7 +561,7 @@ public class GridController extends CPanel
if (mField.getColumnName().equals(tc.getIdentifier().toString()))
{
//don't show included tab field in grid
if (mField.getIncluded_Tab_ID() > 0)
if (mField.getIncluded_Tab_ID() > 0)
{
TableCellNone tcn = new TableCellNone(mField.getColumnName());
tc.setCellRenderer (tcn);
@ -570,7 +570,7 @@ public class GridController extends CPanel
tc.setMinWidth (0);
tc.setMaxWidth (0);
tc.setPreferredWidth (0);
}
}
else if (mField.getDisplayType () == DisplayType.RowID)
{
tc.setCellRenderer (new VRowIDRenderer (false));
@ -627,7 +627,7 @@ public class GridController extends CPanel
public void activate ()
{
if (!init) init();
// Tree to be initiated on second/.. tab
if (m_mTab.isTreeTab() && m_mTab.getTabNo() != 0)
{
@ -652,19 +652,33 @@ public class GridController extends CPanel
if (m_tree != null)
m_tree.initTree (AD_Tree_ID);
}
activateChilds();
} // activate
/**
* activate child grid controller ( included tab )
*/
private void activateChilds()
private void activateChilds()
{
for (GridSynchronizer s : synchronizerList )
for (GridSynchronizer s : synchronizerList )
{
s.activateChild();
}
}
}
public GridController findChild(GridTab gTab)
{
GridController gc = null;
for (GridSynchronizer s : synchronizerList )
{
if (s.getChild().getMTab().equals(gTab))
{
gc = s.getChild();
break;
}
}
return gc;
}
/**
@ -703,7 +717,7 @@ public class GridController extends CPanel
{
return m_mTab.isNeedToSaveParent();
}*/
/**************************************************************************
* Switch from single to multi & vice versa
*/
@ -749,7 +763,7 @@ public class GridController extends CPanel
return m_singleRow;
} // isSingleRow
/**************************************************************************
* Remove Listener - pass on to MTab
* @param l listener
@ -786,7 +800,7 @@ public class GridController extends CPanel
// Process Callout
GridField mField = m_mTab.getField(col);
if (mField != null
if (mField != null
&& (mField.getCallout().length() > 0 || m_mTab.hasDependants(mField.getColumnName())))
{
String msg = m_mTab.processFieldChange(mField); // Dependencies & Callout
@ -797,7 +811,7 @@ public class GridController extends CPanel
dynamicDisplay(col);
} // dataStatusChanged
/**************************************************************************
* List Selection Listener (VTable) - row changed
* @param e event
@ -969,14 +983,14 @@ public class GridController extends CPanel
boolean noData = m_mTab.getRowCount() == 0;
log.config(m_mTab.toString() + " - Rows=" + m_mTab.getRowCount());
// All Components in vPanel (Single Row)
Set<String> hiddens = new HashSet<String>();
Component[] comps = vPanel.getComponentsRecursive();
for (int i = 0; i < comps.length; i++)
{
Component comp = comps[i];
String columnName = comp.getName();
if (columnName != null && columnName.length() > 0)
{
GridField mField = m_mTab.getField(columnName);
@ -1018,8 +1032,8 @@ public class GridController extends CPanel
}
}
}
else
{
else
{
if (comp.isVisible())
comp.setVisible(false);
hiddens.add(columnName);
@ -1031,8 +1045,8 @@ public class GridController extends CPanel
// hide empty field group based on the environment
for (int i = 0; i < comps.length; i++) {
Component comp = comps[i];
if (comp instanceof CollapsiblePanel)
if (comp instanceof CollapsiblePanel)
{
if (comp.getName() == null || comp.getName().startsWith("IncludedTab#"))
continue;
@ -1044,23 +1058,23 @@ public class GridController extends CPanel
if (childs[j].isVisible())
{
String columnName = childs[j].getName();
if (columnName != null && columnName.length() > 0)
if (columnName != null && columnName.length() > 0)
{
GridField mField = m_mTab.getField(columnName);
if (mField != null)
if (mField != null)
{
hasVisible = true;
break;
}
}
}
}
}
if (comp.isVisible() != hasVisible)
comp.setVisible(hasVisible);
}
}
}
//
log.config(m_mTab.toString() + " - fini - "
@ -1080,16 +1094,16 @@ public class GridController extends CPanel
String name = (String)m_mTab.getValue("Name");
String description = (String)m_mTab.getValue("Description");
Boolean IsSummary = (Boolean)m_mTab.getValue("IsSummary");
boolean summary = IsSummary != null && IsSummary.booleanValue();
boolean summary = IsSummary != null && IsSummary.booleanValue();
String imageIndicator = (String)m_mTab.getValue("Action"); // Menu - Action
//
m_tree.nodeChanged(save, keyID, name, description,
m_tree.nodeChanged(save, keyID, name, description,
summary, imageIndicator);
} // rowChanged
/**************************************************************************
* Save Multiple records - Clone a record and assign new values to each
* Save Multiple records - Clone a record and assign new values to each
* clone for a specific column.
* @param ctx context
* @param tableName Table Name
@ -1098,44 +1112,44 @@ public class GridController extends CPanel
* @param values Values to be assigned to clones for the specified column
* @param trxName Transaction
* @throws Exception If error is occured when loading the PO or saving clones
*
*
* @author ashley
*/
protected void saveMultipleRecords(Properties ctx, String tableName,
String columnName, int recordId, Integer[] values,
protected void saveMultipleRecords(Properties ctx, String tableName,
String columnName, int recordId, Integer[] values,
String trxName) throws Exception
{
if (values == null)
{
return ;
}
int oldRow = m_mTab.getCurrentRow();
GridField lineField = m_mTab.getField("Line");
GridField lineField = m_mTab.getField("Line");
for (int i = 0; i < values.length; i++)
{
if (!m_mTab.dataNew(true))
{
throw new IllegalStateException("Could not clone tab");
}
m_mTab.setValue(columnName, values[i]);
if (lineField != null)
{
m_mTab.setValue(lineField, 0);
}
if (!m_mTab.dataSave(false))
{
throw new IllegalStateException("Could not update tab");
}
m_mTab.setCurrentRow(oldRow);
}
}
/**************************************************************************
* Vetoable Change Listener.
* Called from VEditor
@ -1168,7 +1182,7 @@ public class GridController extends CPanel
log.config("(" + m_mTab.toString() + ") "
+ e.getPropertyName() + "=" + e.getNewValue() + " (" + e.getOldValue() + ") "
+ (e.getOldValue() == null ? "" : e.getOldValue().getClass().getName()));
// Save Confirmation dialog MTable-RowSave
if (e.getPropertyName().equals(GridTable.PROPERTY))
@ -1197,7 +1211,7 @@ public class GridController extends CPanel
int row = m_mTab.getCurrentRow();
int col = mTable.findColumn(e.getPropertyName());
//
if (e.getNewValue() == null && e.getOldValue() != null
if (e.getNewValue() == null && e.getOldValue() != null
&& e.getOldValue().toString().length() > 0) // some editors return "" instead of null
mTable.setChanged (true);
else
@ -1210,12 +1224,12 @@ public class GridController extends CPanel
*/
Object newValue = e.getNewValue();
Integer newValues[] = null;
if (newValue instanceof Integer[])
{
newValues = ((Integer[])newValue);
newValue = newValues[0];
if (newValues.length > 1)
{
Integer valuesCopy[] = new Integer[newValues.length - 1];
@ -1232,9 +1246,9 @@ public class GridController extends CPanel
log.severe("Multiple values can only be processed for IDs (Integer)");
throw new PropertyVetoException("Multiple Selection values not available for this field", e);
}
mTable.setValueAt (newValue, row, col); // -> dataStatusChanged -> dynamicDisplay
// Force Callout
if (e.getPropertyName().equals("S_ResourceAssignment_ID"))
{
@ -1242,7 +1256,7 @@ public class GridController extends CPanel
if (mField != null && mField.getCallout().length() > 0)
m_mTab.processFieldChange(mField); // Dependencies & Callout
}
if (newValues != null && newValues.length > 0)
{
// Save data, since record need to be used for generating clones.
@ -1250,10 +1264,10 @@ public class GridController extends CPanel
{
throw new PropertyVetoException("SaveError", e);
}
// Retrieve the current record ID
int recordId = m_mTab.getKeyID(m_mTab.getCurrentRow());
Trx trx = Trx.get(Trx.createTrxName(), true);
trx.start();
try
@ -1278,7 +1292,7 @@ public class GridController extends CPanel
// log.config( "GridController.vetoableChange (" + m_mTab.toString() + ") - fini", e.getPropertyName() + "=" + e.getNewValue());
} // vetoableChange
/**************************************************************************
* Get Model Tab
* @return Model Tab
@ -1296,7 +1310,7 @@ public class GridController extends CPanel
{
return m_mTab.getDisplayLogic();
} // getDisplayLogic
/**
* Get VTable
* @return VTable
@ -1306,7 +1320,7 @@ public class GridController extends CPanel
return vTable;
} // getTable
/**
* Set Window level Mnemonics
* @param set true if set otherwise unregiser
@ -1316,7 +1330,7 @@ public class GridController extends CPanel
if (vPanel != null)
vPanel.setMnemonics(set);
} // setMnemonics
/**
* Stop Table & SR Editors and move focus to graphPanel
* @param saveValue save value
@ -1401,13 +1415,13 @@ public class GridController extends CPanel
{
return m_mTab != null ? m_mTab.isCurrent() : false;
}
//FR [ 1757088 ]
public VPanel getvPanel()
{
return vPanel;
}
//BEGIN - [FR 1953734]
GridController m_Parent;
public void setGCParent(GridController gc){
@ -1422,19 +1436,19 @@ public class GridController extends CPanel
includedTab.m_mTab.setCurrentRow(m_CurrentRowBeforeSave);
}
//END - [FR 1953734]
/**
* Accept pending editor changes.
*/
public void acceptEditorChanges()
public void acceptEditorChanges()
{
if (isSingleRow())
{
Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
if (c != null && this.isAncestorOf(c))
{
{
Component t = c;
while (t != null && t != this)
while (t != null && t != this)
{
if (t instanceof VManagedEditor)
{

View File

@ -22,19 +22,19 @@ import org.compiere.model.StateChangeEvent;
import org.compiere.model.StateChangeListener;
/**
*
*
* @author Low Heng Sin
*
*/
public class GridSynchronizer implements PropertyChangeListener, StateChangeListener {
private GridController parent;
private GridController child;
private GridWindow window;
/**
*
* @param window
*
* @param window
* @param parent
* @param child
*/
@ -42,7 +42,7 @@ public class GridSynchronizer implements PropertyChangeListener, StateChangeList
this.window = window;
this.parent = parent;
this.child = child;
parent.getMTab().addPropertyChangeListener(this);
parent.getMTab().addStateChangeListener(this);
}
@ -51,7 +51,7 @@ public class GridSynchronizer implements PropertyChangeListener, StateChangeList
* @param evt
*/
public void propertyChange(PropertyChangeEvent evt) {
MRole role = MRole.getDefault();
MRole role = MRole.getDefault();
child.query (false, 0, role.getMaxQueryRecords());
}
@ -59,7 +59,7 @@ public class GridSynchronizer implements PropertyChangeListener, StateChangeList
* @param event
*/
public void stateChange(StateChangeEvent event) {
MRole role = MRole.getDefault();
MRole role = MRole.getDefault();
child.query (false, 0, role.getMaxQueryRecords());
}
@ -68,9 +68,12 @@ public class GridSynchronizer implements PropertyChangeListener, StateChangeList
*/
public void activateChild() {
window.initTab(window.getTabIndex(child.getMTab()));
child.activate();
MRole role = MRole.getDefault();
child.activate();
MRole role = MRole.getDefault();
child.query (false, 0, role.getMaxQueryRecords());
}
public GridController getChild() {
return child;
}
}