📄 wwindow.java
字号:
form.setName(FORM_NAME);
form.addElement(new input("hidden", P_Command, "")); // button commands
form.addElement(new input("hidden", P_MR_RowNo, "")); // RowNo
// Set Title of main window
String title = ws.mWindow.getName() + " - " + loginInfo;
form.addElement(new script("top.document.title='" + title + "';"));
// Buttons
form.addElement(createImage(AD_Language, "Ignore", "reset();", true, false));
form.addElement(" ");
form.addElement(createImage(AD_Language, "Help"));
form.addElement(createImage(AD_Language, "New"));
form.addElement(createImage(AD_Language, "Delete", "if (confirm(deleteText)) submit();", true, false));
form.addElement(createImage(AD_Language, "Save"));
form.addElement(" ");
form.addElement(createImage(AD_Language, "Find"));
form.addElement(createImage(AD_Language, "Refresh"));
form.addElement(createImage(AD_Language, "Attachment", null, ws.curTab.canHaveAttachment(), ws.curTab.hasAttachment()));
form.addElement(createImage(AD_Language, "Multi", null, true, !ws.curTab.isSingleRow()));
form.addElement(" ");
form.addElement(createImage(AD_Language, "History", null,
ws.mWindow.isTransaction()&&ws.curTab.getTabNo()==0, !ws.curTab.isOnlyCurrentRows()));
form.addElement(" ");
boolean isFirst = ws.curTab.getCurrentRow() < 1;
form.addElement(createImage(AD_Language, "First", null, !isFirst, false));
form.addElement(createImage(AD_Language, "Previous", null, !isFirst, false));
boolean isLast = ws.curTab.getCurrentRow()+1 == ws.curTab.getRowCount();
form.addElement(createImage(AD_Language, "Next", null, !isLast, false));
form.addElement(createImage(AD_Language, "Last", null, !isLast, false));
form.addElement(" ");
form.addElement(createImage(AD_Language, "Report"));
form.addElement(createImage(AD_Language, "Print"));
form.addElement(" ");
form.addElement(createImage(AD_Language, "Exit"));
// Tabs
form.addElement(new br());
form.addElement(new br());
form.addElement(new input("hidden", P_Tab, ""));
for (int i = 0; i < ws.mWindow.getTabCount(); i++)
{
MTab tab = ws.mWindow.getTab(i);
big big = new big(tab.getName());
if (ws.curTab.getTabNo() == i)
big.setID("tabSelected"); // css
else
{
big.setID("tab"); // css
big.setOnClick("alert('" + tab.getName() + "');");
big.setOnClick("document." + FORM_NAME + "." + P_Tab + ".value='" + i + "';submit();");
}
// Status: Description
if (tab.getDescription().length() > 0)
big.setOnMouseOver("status='" + tab.getDescription() + "';return true;");
form.addElement(big);
}
// Fields
form.addElement(new hr());
form.addElement(table);
// Status Line
tr statusline = new tr();
statusline.addElement(new td().setWidth("85%").addElement(statusInfo));
statusline.addElement(new td().setWidth("10%").setAlign("right").addElement(new small(statusDB)));
statusline.addElement(new td().setWidth("5%").setAlign("right").addElement(createImage(AD_Language, "Save")));
//
form.addElement(new hr());
form.addElement(new table().setWidth("100%").addElement(statusline));
// fini
form.addElement("\n");
/** @todo Dynamic Display */
// form.addElement(new Script("dynDisplay(); createWCmd();")); // initial Display & set Cmd Window
return form;
} // createLayout
/*************************************************************************/
/**
* Create Image with name, id of button_name and set P_Command onClick
* @param AD_Language
* @param name Name of the Image used also for Name24.gif
* @param js_command Java script command, null results in 'submit();', an empty string disables OnClick
* @param enabled Enable the immage button, if not uses the "D" image
* @param pressed If true, use the "X" image
* @return Image
*/
private static img createImage (String AD_Language, String name, String js_command, boolean enabled, boolean pressed)
{
StringBuffer imgName = new StringBuffer(name);
if (!enabled)
imgName.append("D");
else if (pressed)
imgName.append("X");
imgName.append("24.gif");
//
img img = new img (WEnv.getImageDirectory(imgName.toString()), name);
if (enabled)
img.setAlt(Msg.getMsg(AD_Language, name)); // Translate ToolTip
//
if (!pressed || !enabled)
img.setID("imgButton"); // css
else
img.setID("imgButtonPressed"); // css
//
if (js_command == null)
js_command = "submit();";
if (js_command.length() > 0 && enabled)
img.setOnClick("document." + FORM_NAME + "." + P_Command + ".value='" + name + "';" + js_command);
//
return img;
} // createImage
/**
* Create enabled Image with name, id of button_name and sumbit command
* @param AD_Language
* @param name Name of the Image used also for Name24.gif
* @return Image
*/
private static img createImage (String AD_Language, String name)
{
return createImage (AD_Language, name, null, true, false);
} // createImage
/*************************************************************************/
/**
* Add Field to Line
* @param line
* @param field
* @param oData
* @param data
* @param isDependant - other columns are dependant on this column
*/
private static void addField (tr line, MField field, Object oData, String data, boolean isDependant)
{
String columnName = field.getColumnName();
boolean readOnly = !field.isEditable(false); // no context check
boolean mandatory = field.isMandatory(false); // no context check
// Any Error?
boolean error = field.isErrorValue();
if (error)
data = field.getErrorValue();
if (data == null)
data = "";
/**
* HTML Label Element
* ID = ID_columnName
*
* HTML Input Elements
* NAME = columnName
* ID = ID_columnName
*/
label label = new label(columnName).addElement(field.getHeader());
label.setID("ID_" + columnName);
label.setTitle(field.getDescription());
int dt = field.getDisplayType();
// String, Date, Timestamp
if (dt == DisplayType.String || DisplayType.isDate(dt))
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
//
input string = new input(input.text, columnName, data);
string.setSize(field.getDisplayLength());
if (dt == DisplayType.String)
string.setMaxlength(field.getFieldLength());
else
string.setMaxlength(field.getDisplayLength());
string.setID("ID_" + columnName);
string.setDisabled(readOnly);
if (error)
string.setClass(C_ERROR);
else if (mandatory)
string.setClass(C_MANDATORY);
if (isDependant)
string.setOnChange("dynDisplay();");
td td = new td().addElement(string).setAlign(AlignType.LEFT);
if (field.isLongField())
td.setColSpan(3);
line.addElement(td);
}
// Numeric
else if (DisplayType.isNumeric(dt))
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
//
input string = new input(input.text, columnName, data);
string.setSize(field.getDisplayLength());
string.setID("ID_" + columnName);
string.setDisabled(readOnly);
if (error)
string.setClass(C_ERROR);
else if (mandatory)
string.setClass(C_MANDATORY);
if (isDependant)
string.setOnChange("dynDisplay();");
line.addElement(new td().addElement(string).setAlign(AlignType.LEFT));
}
// Text
else if (dt == DisplayType.Text)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT).setVAlign(AlignType.TOP));
//
textarea text = new textarea(columnName, 3, field.getDisplayLength()).addElement(data);
text.setID("ID_" + columnName);
text.setDisabled(readOnly);
if (error)
text.setClass(C_ERROR);
else if (mandatory)
text.setClass(C_MANDATORY);
if (isDependant)
text.setOnChange("dynDisplay();");
td td = new td().addElement(text).setAlign(AlignType.LEFT);
if (field.isLongField())
td.setColSpan(3);
line.addElement(td);
}
else if (dt == DisplayType.Memo)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT).setVAlign(AlignType.TOP));
//
textarea text = new textarea(columnName, 25, field.getDisplayLength()).addElement(data);
text.setID("ID_" + columnName);
text.setDisabled(readOnly);
if (error)
text.setClass(C_ERROR);
else if (mandatory)
text.setClass(C_MANDATORY);
if (isDependant)
text.setOnChange("dynDisplay();");
td td = new td().addElement(text).setAlign(AlignType.LEFT);
if (field.isLongField())
td.setColSpan(3);
line.addElement(td);
}
// CheckBox
else if (dt == DisplayType.YesNo)
{
line.addElement(new td());
//
boolean check = data.equals("Y");
input cb = new input(input.checkbox, columnName, "true").setChecked(check).addElement(field.getHeader());
cb.setID("ID_" + columnName);
cb.setDisabled(readOnly);
if (error)
cb.setClass(C_ERROR);
// else if (mandatory) // looks odd
// cb.setClass(C_MANDATORY);
if (isDependant)
cb.setOnChange("dynDisplay();");
line.addElement(new td().addElement(cb).setAlign(AlignType.LEFT));
}
// Search
else if (dt == DisplayType.Search)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
// The hidden field Name=columnName
input hidden = new input(input.hidden, columnName, data);
// The display field Name=columnName_D, ID=ID_columnName
String displayData = field.getLookup().getDisplay(oData);
input display = new input(input.text, columnName + "_D", displayData);
// display.setSize(field.getDisplayLength()).setMaxlength(field.getFieldLength());
display.setID("ID_" + columnName);
display.setReadOnly(true);
// The button Name=columnName_B, ID=ID_columnName
input button = new input(input.image, columnName + "_B", "x");
String gif = "PickOpen10.gif";
if (columnName.equals("C_BPartner_ID"))
gif = "BPartner10.gif";
else if (columnName.equals("M_Product_ID"))
gif = "Product10.gif";
button.setSrc(WEnv.getImageDirectory(gif));
button.setBorder(1);
button.setOnClick("return startLookup(" + columnName + ");");
if (error)
display.setClass(C_ERROR);
else if (mandatory)
display.setClass(C_MANDATORY);
if (isDependant)
display.setOnChange("dynDisplay();");
td td = new td()
.addElement(hidden)
.addElement(display)
.addElement(button)
.setAlign(AlignType.LEFT);
line.addElement(td);
}
// Location
else if (dt == DisplayType.Location)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
// The hidden field Name=columnName
input hidden = new input(input.hidden, columnName, data);
// The display field Name=columnName_D, ID=ID_columnName
String displayData = field.getLookup().getDisplay(oData);
input display = new input(input.text, columnName + "_D", displayData);
// display.setSize(field.getDisplayLength()).setMaxlength(field.getFieldLength());
display.setID("ID_" + columnName);
display.setReadOnly(true);
// The button Name=columnName_B, ID=ID_columnName
input button = new input(input.image, columnName + "_B", "l");
button.setSrc(WEnv.getImageDirectory("Location10.gif")).setBorder(1);
button.setOnClick("return startLocation(" + columnName + ");");
if (error)
display.setClass(C_ERROR);
else if (mandatory)
display.setClass(C_MANDATORY);
if (isDependant)
display.setOnChange("dynDisplay();");
td td = new td()
.addElement(hidden)
.addElement(display)
.addElement(button)
.setAlign(AlignType.LEFT);
line.addElement(td);
}
// Account
else if (dt == DisplayType.Account)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
// The hidden field Name=columnName
input hidden = new input(input.hidden, columnName, data);
// The display field Name=columnName_D, ID=ID_columnName
String displayData = field.getLookup().getDisplay(oData);
input display = new input(input.text, columnName + "_D", displayData);
// display.setSize(field.getDisplayLength()).setMaxlength(field.getFieldLength());
display.setID("ID_" + columnName);
display.setReadOnly(true);
// The button Name=columnName_B, ID=ID_columnName
input button = new input(input.image, columnName + "_B", "x");
button.setSrc(WEnv.getImageDirectory("Account10.gif"));
button.setBorder(1);
button.setOnClick("return startAccount(" + columnName + ");");
if (error)
display.setClass(C_ERROR);
else if (mandatory)
display.setClass(C_MANDATORY);
if (isDependant)
display.setOnChange("dynDisplay();");
td td = new td()
.addElement(hidden)
.addElement(display)
.addElement(button)
.setAlign(AlignType.LEFT);
line.addElement(td);
}
// Lookup, Loactor -> Popup
else if (DisplayType.isLookup(dt) || dt == DisplayType.Locator)
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
//
Lookup lookup = (Lookup)field.getLookup();
Object[] list = lookup.getData(mandatory, true, false).toArray(); // also inactive
int size = list.length;
option options[] = new option[size];
if (size > 0)
{
boolean isNumber = list[0] instanceof KeyNamePair;
for (int i = 0; i < size; i++)
{
String key = null;
if (dt == DisplayType.Locator)
{
Locator loc = (Locator)list[i];
key = String.valueOf(loc.M_Locator_ID);
options[i] = new option(key).addElement(loc.Value);
}
else if (isNumber)
{
KeyNamePair p = (KeyNamePair)list[i];
key = String.valueOf(p.getKey());
options[i] = new option(key).addElement(p.getName());
}
else
{
ValueNamePair p = (ValueNamePair)list[i];
key = p.getValue();
if (key == null || key.length() == 0)
key = "??";
String name = p.getName();
if (name == null || name.length() == 0)
name = "???";
options[i] = new option(key).addElement(name);
}
if (data.equals(key))
options[i].setSelected(true);
}
}
select sel = new select(columnName, options);
sel.setID("ID_" + columnName);
sel.setDisabled(readOnly);
if (error)
sel.setClass(C_ERROR);
else if (mandatory)
sel.setClass(C_MANDATORY);
if (isDependant)
sel.setOnChange("dynDisplay();");
line.addElement(new td().addElement(sel));
}
// button
else if (dt == DisplayType.Button)
{
line.addElement(new td());
//
input b = new input(input.button, columnName, field.getHeader());
b.setID("ID_" + columnName);
b.setDisabled(readOnly);
// b.setOnClick("submit();");
line.addElement(new td().addElement(b).setAlign(AlignType.LEFT));
}
// Unknown
else
{
line.addElement(new td().addElement(label).setAlign(AlignType.RIGHT));
line.addElement(new td().addElement("[" + data + "]").setID("ID_" + columnName));
}
// Additional Values
String dispLogic = field.getDisplayLogic();
if (dispLogic == null)
dispLogic = "";
if (dispLogic.length() > 0)
{
dispLogic = dispLogic.replace('\'', '"'); // replace ' with "
String attrib = "document." + FORM_NAME + "." + columnName + ".displayLogic='" + dispLogic + "';";
line.addElement(new script(attrib));
}
} // addField
} // WWindow
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -