📄 apanel.java
字号:
{
int WBIndex = tabPanel.getSelectedIndex();
m_curWindowNo = m_mWorkbench.getWindowNo(WBIndex);
// Window Change
Log.trace(Log.l1_User, "APanel.stateChanged curWin=" + m_curWindowNo, "Win=" + tp);
if (tp.getSelectedComponent() instanceof JTabbedPane)
m_curWinTab = (JTabbedPane)tp.getSelectedComponent();
else
throw new java.lang.IllegalArgumentException("APanel.stateChanged - Window does not contain Tabs");
if (m_curWinTab.getSelectedComponent() instanceof GridController)
m_curGC = (GridController)m_curWinTab.getSelectedComponent();
// else if (m_curWinTab.getSelectedComponent() instanceof APanelTab)
// isAPanelTab = true;
else
throw new java.lang.IllegalArgumentException("APanel.stateChanged - Window-Tab does not contain GridControler");
// change pointers
m_curTabIndex = m_curWinTab.getSelectedIndex();
}
else
{
// Just a Tab Change
Log.trace(Log.l1_User, "APanel.stateChanged", "Tab=" + tp);
m_curWinTab = tp;
int tpIndex = m_curWinTab.getSelectedIndex();
back = tpIndex < m_curTabIndex;
GridController gc = null;
if (m_curWinTab.getSelectedComponent() instanceof GridController)
gc = (GridController)m_curWinTab.getSelectedComponent();
else if (m_curWinTab.getSelectedComponent() instanceof APanelTab)
isAPanelTab = true;
else
throw new java.lang.IllegalArgumentException("APanel.stateChanged - Tab does not contain GridControler");
// Save old Tab
if (m_curGC != null)
{
m_curGC.stopEditor(true);
// has anything changed?
if (m_curTab.needSave(true, false))
{ // do we have real change
if (m_curTab.needSave(true, true))
{ // explicitly ask when changing tabs
if (ADialog.ask(m_curWindowNo, this, "SaveChanges?", m_curTab.getCommitWarning()))
{ // yes we want to save
if (!m_curTab.dataSave(true))
{ // there is a problem, so we go back
m_curWinTab.setSelectedIndex(m_curTabIndex);
setBusy(false);
return;
}
}
else // Don't save
m_curTab.dataIgnore();
}
else // new record, but nothing changed
m_curTab.dataIgnore();
} // there is a change
}
if (m_curAPanelTab != null)
{
m_curAPanelTab.saveData();
m_curAPanelTab.unregisterPanel();
m_curAPanelTab = null;
}
// new tab
// if (m_curTabIndex >= 0)
// m_curWinTab.setForegroundAt(m_curTabIndex, CompierePLAF.getTextColor_Normal());
// m_curWinTab.setForegroundAt(tpIndex, CompierePLAF.getTextColor_OK());
m_curTabIndex = tpIndex;
if (!isAPanelTab)
m_curGC = gc;
}
// Sort Tab Handling
if (isAPanelTab)
{
m_curAPanelTab = (APanelTab)m_curWinTab.getSelectedComponent();
m_curAPanelTab.registerAPanel(this);
m_curAPanelTab.loadData();
}
else // Cur Tab Setting
{
m_curGC.activate();
m_curTab = m_curGC.getMTab();
// Refresh only current row when tab is current
if (back && m_curTab.isCurrent())
m_curTab.dataRefresh();
else // Requery & autoSize
m_curGC.query (m_onlyCurrentRows, m_onlyCurrentDays);
// Set initial record
if (m_curTab.getRowCount() == 0)
{
// Automatically create New Record, if none & tab not RO
if (!m_curTab.isReadOnly())
{
Log.trace(Log.l3_Util, "APanel.stateChanged - no record - creating new");
m_curTab.dataNew(false);
}
m_curTab.navigateCurrent(); // updates counter
m_curGC.dynamicDisplay(0);
}
else
m_curTab.navigateCurrent();
}
// Update <-> Navigation
aDetail.setEnabled(m_curTabIndex != m_curWinTab.getTabCount()-1);
aParent.setEnabled(m_curTabIndex != 0 && m_curWinTab.getTabCount() > 1);
// History (on first tab only)
if (m_mWorkbench.getMWindow(getWindowIndex()).isTransaction())
aHistory.setEnabled(isFirstTab());
else
{
aHistory.setPressed(false);
aHistory.setEnabled(false);
}
// Document Print
aPrint.setEnabled(m_curTab.isPrinted());
// Query
aFind.setPressed(m_curTab.isQueryActive());
// Single-Multi
if (isAPanelTab)
{
aMulti.setPressed(false);
aMulti.setEnabled(false);
}
else
{
aMulti.setEnabled(true);
aMulti.setPressed(!m_curGC.isSingleRow());
}
//
aNew.setEnabled(!isAPanelTab);
aDelete.setEnabled(!isAPanelTab);
aFind.setEnabled(!isAPanelTab);
aRefresh.setEnabled(!isAPanelTab);
aAttachment.setEnabled(!isAPanelTab);
//
m_curWinTab.requestFocusInWindow();
setBusy(false);
Log.trace(Log.l1_User, "APanel.stateChanged - fini");
} // stateChanged
/**
* Navigate to Detail Tab ->
*/
private void cmd_detail()
{
int index = m_curWinTab.getSelectedIndex();
if (index == m_curWinTab.getTabCount()-1)
return;
m_curWinTab.setSelectedIndex(index+1);
} // navigateDetail
/**
* Navigate to Parent Tab <-
*/
private void cmd_parent()
{
int index = m_curWinTab.getSelectedIndex();
if (index == 0)
return;
m_curWinTab.setSelectedIndex(index-1);
} // navigateParent
/*************************************************************************/
/**
* Action Listener
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
Log.trace(Log.l1_User, "APanel.actionPerformed", e.getActionCommand());
// + " - " + new Timestamp(e.getWhen()) + " " + isUILocked());
if (m_disposing || isUILocked())
return;
String cmd = e.getActionCommand();
// Do ScreenShot w/o busy
if (cmd.equals("ScreenShot"))
{
AEnv.actionPerformed (e.getActionCommand(), m_curWindowNo, this);
return;
}
// Problem: doubleClick detection - can't disable button as clicking button may change button status
setBusy (true);
// Command Buttons
if (e.getSource() instanceof VButton)
{
actionButton((VButton)e.getSource());
setBusy(false);
return;
}
try
{
// File
if (cmd.equals(aReport.getName()))
cmd_report(e.getSource());
else if (cmd.equals(aPrint.getName()))
cmd_print(e.getSource());
else if (cmd.equals(aEnd.getName()))
cmd_end(false);
else if (cmd.equals(aExit.getName()))
cmd_end(true);
// Edit
else if (cmd.equals(aNew.getName()))
cmd_new(false);
else if (cmd.equals(aSave.getName()))
cmd_save(true);
else if (cmd.equals(aCopy.getName()))
cmd_new(true);
else if (cmd.equals(aDelete.getName()))
cmd_delete();
else if (cmd.equals(aIgnore.getName()))
cmd_ignore();
else if (cmd.equals(aRefresh.getName()))
cmd_refresh();
else if (cmd.equals(aFind.getName()))
cmd_find();
// View
else if (cmd.equals(aAttachment.getName()))
cmd_attachment();
else if (cmd.equals(aHistory.getName()))
cmd_history();
else if (cmd.equals(aMulti.getName()))
m_curGC.switchRowPresentation();
// Go
else if (cmd.equals(aFirst.getName()))
{/*cmd_save(false);*/ m_curTab.navigate(0);}
else if (cmd.equals(aPrevious.getName()))
{/*cmd_save(false);*/ m_curTab.navigateRelative(-1);}
else if (cmd.equals(aNext.getName()))
{/*cmd_save(false); */ m_curTab.navigateRelative(+1);}
else if (cmd.equals(aLast.getName()))
{/*cmd_save(false);*/ m_curTab.navigate(m_curTab.getRowCount()-1);}
else if (cmd.equals(aParent.getName()))
cmd_parent();
else if (cmd.equals(aDetail.getName()))
cmd_detail();
// Help
else if (cmd.equals(aHelp.getName()))
cmd_help();
// General Commands (Environment)
else if (!AEnv.actionPerformed (e.getActionCommand(), m_curWindowNo, this))
Log.error("APanel.actionPerformed - No action for: " + cmd);
}
catch (Exception ex)
{
String msg = ex.getMessage();
if (msg == null || msg.length() == 0)
msg = ex.toString();
msg = Msg.parseTranslation(m_ctx, msg);
ADialog.error(m_curWindowNo, this, "Error", msg);
}
//
m_curWinTab.requestFocusInWindow();
setBusy(false);
} // actionPerformed
/**
* Create New Record
* @param copy true if current record is to be copied
*/
private void cmd_new (boolean copy)
{
Log.trace(Log.l3_Util, "APanel.cmd_new - copy=" + copy);
cmd_save(false);
m_curTab.dataNew (copy);
m_curGC.dynamicDisplay(0);
// m_curTab.getTableModel().setChanged(false);
} // cmd_new
/**
* Confirm & delete record
*/
private void cmd_delete()
{
if (m_curTab.isReadOnly())
return;
int keyID = m_curTab.getCurrentKeyID();
if (ADialog.ask(m_curWindowNo, this, "DeleteRecord?"))
if (m_curTab.dataDelete())
m_curGC.rowChanged(false, keyID);
m_curGC.dynamicDisplay(0);
} // cmd_delete
/**
* If required ask if you want to save and save it
* @param manualCmd true if invoked manually (i.e. force)
* @return true if saved
*/
private boolean cmd_save (boolean manualCmd)
{
if (m_curAPanelTab != null)
manualCmd = false;
Log.trace(Log.l3_Util, "APanel.cmd_save - Manual=" + manualCmd);
m_errorDisplayed = false;
m_curGC.stopEditor(true);
boolean saveOK = true;
if (m_curAPanelTab != null)
{
m_curAPanelTab.saveData();
aSave.setEnabled(false); // set explicitly
}
if (m_curTab.getCommitWarning().length() > 0 && m_curTab.needSave(true, false))
if (!ADialog.ask(m_curWindowNo, this, "SaveChanges?", m_curTab.getCommitWarning()))
return false;
// manually initiated
boolean retValue = m_curTab.dataSave(manualCmd);
// if there is no previous error
if (manualCmd && !retValue && !m_errorDisplayed)
{
ADialog.error(m_curWindowNo, this, "SaveIgnored");
setStatusLine(Msg.getMsg(m_ctx, "SaveIgnored"), true);
}
m_curGC.rowChanged(true, m_curTab.getCurrentKeyID());
if (manualCmd)
m_curGC.dynamicDisplay(0);
return retValue;
} // cmd_save
/**
* Ignore
*/
private void cmd_ignore()
{
m_curGC.stopEditor(false);
m_curTab.dataIgnore();
m_curGC.dynamicDisplay(0);
} // cmd_ignore
/**
* Refresh
*/
private void cmd_refresh()
{
cmd_save(false);
m_curTab.dataRefreshAll();
m_curGC.dynamicDisplay(0);
} // cmd_refresh
/**
* Print standard Report
* @param source event source
*/
private void cmd_report (Object source)
{
Log.trace(Log.l1_User, "APanel.cmd_report");
cmd_save(false);
// Query
MQuery query = new MQuery(m_curTab.getTableName());
// Link for detail records
String link = m_curTab.getLinkColumnName();
// Current row otherwise
if (link.length() == 0)
link = m_curTab.getKeyColumnName();
// Find display
String infoName = null;
String infoDisplay = null;
for (int i = 0; i < m_curTab.getFieldCount(); i++)
{
MField field = m_curTab.getField(i);
if (field.isKey())
infoName = field.getHeader();
if ((field.getColumnName().equals("Name") || field.getColumnName().equals("DocumentNo") )
&& field.getValue() != null)
infoDisplay = field.getValue().toString();
if (infoName != null && infoDisplay != null)
break;
}
if (link.length() != 0)
{
if (link.endsWith("_ID"))
query.addRestriction(link, MQuery.EQUAL,
new Integer(Env.getContextAsInt(m_ctx, m_curWindowNo, link)),
infoName, infoDisplay);
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -