📄 apanel.java
字号:
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("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))
{
// Automatic Save
if (Env.isAutoCommit(m_ctx, m_curWindowNo)
& !m_curTab.dataSave(true))
{ // there is a problem, so we go back
m_curWinTab.setSelectedIndex(m_curTabIndex);
setBusy(false);
return;
}
// explicitly ask when changing tabs
else 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()
&& (Env.isAutoNew(m_ctx, m_curWindowNo) || m_curTab.isQueryNewRecord()))
{
log.config("No record - creating new");
m_curTab.dataNew(false);
}
else // No Records found
{
aSave.setEnabled(false);
aDelete.setEnabled(false);
}
m_curTab.navigateCurrent(); // updates counter
m_curGC.dynamicDisplay(0);
}
// else ##CHANGE
// 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());
// Order Tab
if (isAPanelTab)
{
aMulti.setPressed(false);
aMulti.setEnabled(false);
aNew.setEnabled(false);
aDelete.setEnabled(false);
aFind.setEnabled(false);
aRefresh.setEnabled(false);
aAttachment.setEnabled(false);
}
else // Grid Tab
{
aMulti.setEnabled(true);
aMulti.setPressed(!m_curGC.isSingleRow());
aFind.setEnabled(true);
aRefresh.setEnabled(true);
aAttachment.setEnabled(true);
}
//
m_curWinTab.requestFocusInWindow();
setBusy(false);
log.config( "fini");
} // stateChanged
/**
* Navigate to Detail Tab ->
*/
private void cmd_detail()
{
int index = m_curWinTab.getSelectedIndex();
if (index == m_curWinTab.getTabCount()-1)
return;
m_curGC.getTable().removeEditor();
m_curWinTab.setSelectedIndex(index+1);
} // navigateDetail
/**
* Navigate to Parent Tab <-
*/
private void cmd_parent()
{
int index = m_curWinTab.getSelectedIndex();
if (index == 0)
return;
m_curGC.getTable().removeEditor();
m_curWinTab.setSelectedIndex(index-1);
} // navigateParent
/**************************************************************************
* Action Listener
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
log.info(e.getActionCommand() + " - " + e.getModifiers());
// + " - " + new Timestamp(e.getWhen()) + " " + isUILocked());
if (m_disposing || isUILocked())
return;
m_lastModifiers = e.getModifiers();
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();
else if (cmd.equals(aPrint.getName()))
cmd_print();
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();
else if (m_isPersonalLock && cmd.equals(aLock.getName()))
cmd_lock();
// 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_curGC.getTable().removeEditor();
m_curTab.navigate(0);
}
else if (cmd.equals(aPrevious.getName()))
{ /*cmd_save(false);*/
m_curGC.getTable().removeEditor();
m_curTab.navigateRelative(-1);
}
else if (cmd.equals(aNext.getName()))
{ /*cmd_save(false); */
m_curGC.getTable().removeEditor();
m_curTab.navigateRelative(+1);
}
else if (cmd.equals(aLast.getName()))
{ /*cmd_save(false);*/
m_curGC.getTable().removeEditor();
m_curTab.navigate(m_curTab.getRowCount()-1);
}
else if (cmd.equals(aParent.getName()))
cmd_parent();
else if (cmd.equals(aDetail.getName()))
cmd_detail();
else if (cmd.equals(aZoomAcross.getName()))
cmd_zoomAcross();
else if (cmd.equals(aRequest.getName()))
cmd_request();
else if (cmd.equals(aArchive.getName()))
cmd_archive();
// Tools
else if (aWorkflow != null && cmd.equals(aWorkflow.getName()))
{
if (m_curTab.getRecord_ID() <= 0)
;
else if (m_curTab.getTabNo() == 0 && m_mWorkbench.getMWindow(getWindowIndex()).isTransaction())
AEnv.startWorkflowProcess(m_curTab.getAD_Table_ID(), m_curTab.getRecord_ID());
else
AEnv.startWorkflowProcess(m_curTab.getAD_Table_ID(), m_curTab.getRecord_ID());
}
else if (aWinSize != null && cmd.equals(aWinSize.getName()))
cmd_winSize();
// Help
else if (cmd.equals(aHelp.getName()))
cmd_help();
// General Commands (Environment)
else if (!AEnv.actionPerformed (e.getActionCommand(), m_curWindowNo, this))
log.log(Level.SEVERE, "No action for: " + cmd);
}
catch (Exception ex)
{
log.log(Level.SEVERE, cmd, 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.config("copy=" + copy);
if (!m_curTab.isInsertRecord())
{
log.warning("Insert Record disabled for Tab");
return;
}
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.getRecord_ID();
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.config("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.getRecord_ID());
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
*/
private void cmd_report ()
{
log.info("");
if (!MRole.getDefault().isCanReport(m_curTab.getAD_Table_ID()))
{
ADialog.error(m_curWindowNo, this, "AccessCannotReport");
return;
}
cmd_save(false);
// Query
MQuery query = new MQuery(m_curTab.getTableName());
// Link for detail records
String queryColumn = m_curTab.getLinkColumnName();
// Current row otherwise
if (queryColumn.length() == 0)
queryColumn = 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 (queryColumn.length() != 0)
{
if (queryColumn.endsWith("_ID"))
query.addRestriction(queryColumn, MQuery.EQUAL,
new Integer(Env.getContextAsInt(m_ctx, m_curWindowNo, queryColumn)),
infoName, infoDisplay);
else
query.addRestriction(queryColumn, MQuery.EQUAL,
Env.getContext(m_ctx, m_curWindowNo, queryColumn),
infoName, infoDisplay);
}
new AReport (m_curTab.getAD_Table_ID(), aReport.getButton(), query);
} // cmd_report
/**
* Zoom Across Menu
*/
private void cmd_zoomAcross()
{
int record_ID = m_curTab.getRecord_ID();
log.info("ID=" + record_ID);
if (record_ID <= 0)
return;
// Query
MQuery query = new MQuery();
// Current row
String link = m_curTab.getKeyColumnName();
// Link for detail records
if (link.length() == 0)
link = m_curTab.getLinkColumnName();
if (link.length() != 0)
{
if (link.endsWith("_ID"))
query.addRestriction(link, MQuery.EQUAL,
new Integer(Env.getContextAsInt(m_ctx, m_curWindowNo, link)));
else
query.addRestriction(link, MQuery.EQUAL,
Env.getContext(m_ctx, m_curWindowNo, link));
}
new AZoomAcross (aZoomAcross.getButton(),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -