📄 vbomdrop.java
字号:
{
String title = Msg.getMsg(Env.getCtx(), "Optional");
JCheckBox cb = new JCheckBox(title);
cb.setSelected(false);
selected = false;
cb.addActionListener(this);
m_selectionList.add(cb);
this.add(cb, new ALayoutConstraint(m_bomLine++, 0));
}
else // Alternative
{
String title = Msg.getMsg(Env.getCtx(), "Alternative") + " " + bomType;
JRadioButton b = new JRadioButton(title);
String groupName = String.valueOf(parentM_Product_ID) + "_" + bomType;
ButtonGroup group = (ButtonGroup)m_buttonGroups.get(groupName);
if (group == null)
{
log.fine("ButtonGroup=" + groupName);
group = new ButtonGroup();
m_buttonGroups.put(groupName, group);
group.add(b);
b.setSelected(true); // select first one
}
else
{
group.add(b);
b.setSelected(false);
selected = false;
}
b.addActionListener(this);
m_selectionList.add(b);
this.add(b, new ALayoutConstraint(m_bomLine++, 0));
}
// Add to List & display
m_productList.add (new Integer(M_Product_ID));
VNumber qty = new VNumber ("Qty", true, false, true, DisplayType.Quantity, name);
qty.setValue(lineQty);
qty.setReadWrite(selected);
m_qtyList.add(qty);
CLabel label = new CLabel (name);
label.setLabelFor(qty);
this.add(label);
this.add(qty);
} // addDisplay
/**
* Get Preferred Size
* @return size
*/
public Dimension getPreferredSize ()
{
Dimension size = super.getPreferredSize ();
if (size.width > WINDOW_WIDTH)
size.width = WINDOW_WIDTH - 30;
return size;
} // getPreferredSize
/**************************************************************************
* Action Listener
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
log.config(e.getActionCommand());
Object source = e.getSource();
// Toggle Qty Enabled
if (source instanceof JCheckBox || source instanceof JRadioButton)
{
cmd_selection (source);
// need to de-select the others in group
if (source instanceof JRadioButton)
{
// find Button Group
Iterator it = m_buttonGroups.values().iterator();
while (it.hasNext())
{
ButtonGroup group = (ButtonGroup)it.next();
Enumeration en = group.getElements();
while (en.hasMoreElements())
{
// We found the group
if (source == en.nextElement())
{
Enumeration info = group.getElements();
while (info.hasMoreElements())
{
Object infoObj = info.nextElement();
if (source != infoObj)
cmd_selection(infoObj);
}
}
}
}
}
} // JCheckBox or JRadioButton
// Product / Qty
else if (source == productField || source == productQty)
{
m_qty = (BigDecimal)productQty.getValue();
KeyNamePair pp = (KeyNamePair)productField.getSelectedItem();
m_product = MProduct.get (Env.getCtx(), pp.getKey());
createMainPanel();
sizeIt();
}
// Order
else if (source == orderField)
{
KeyNamePair pp = (KeyNamePair)orderField.getSelectedItem();
boolean valid = (pp != null && pp.getKey() > 0);
//
if (invoiceField != null)
invoiceField.setReadWrite(!valid);
if (projectField != null)
projectField.setReadWrite(!valid);
}
// Invoice
else if (source == invoiceField)
{
KeyNamePair pp = (KeyNamePair)invoiceField.getSelectedItem();
boolean valid = (pp != null && pp.getKey() > 0);
//
if (orderField != null)
orderField.setReadWrite(!valid);
if (projectField != null)
projectField.setReadWrite(!valid);
}
// Project
else if (source == projectField)
{
KeyNamePair pp = (KeyNamePair)projectField.getSelectedItem();
boolean valid = (pp != null && pp.getKey() > 0);
//
if (orderField != null)
orderField.setReadWrite(!valid);
if (invoiceField != null)
invoiceField.setReadWrite(!valid);
}
// OK
else if (e.getActionCommand().equals(ConfirmPanel.A_OK))
{
if (cmd_save())
dispose();
}
else if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL))
dispose();
// Enable OK
boolean OK = m_product != null;
if (OK)
{
KeyNamePair pp = null;
if (orderField != null)
pp = (KeyNamePair)orderField.getSelectedItem();
if ((pp == null || pp.getKey() <= 0) && invoiceField != null)
pp = (KeyNamePair)invoiceField.getSelectedItem();
if ((pp == null || pp.getKey() <= 0) && projectField != null)
pp = (KeyNamePair)projectField.getSelectedItem();
OK = (pp != null && pp.getKey() > 0);
}
confirmPanel.getOKButton().setEnabled(OK);
} // actionPerformed
/**
* Enable/disable qty based on selection
* @param source JCheckBox or JRadioButton
*/
private void cmd_selection (Object source)
{
for (int i = 0; i < m_selectionList.size(); i++)
{
if (source == m_selectionList.get(i))
{
boolean selected = isSelectionSelected(source);
VNumber qty = (VNumber)m_qtyList.get(i);
qty.setReadWrite(selected);
return;
}
}
log.log(Level.SEVERE, "VBOMDrop.cmd_selection - not found - " + source);
} // cmd_selection
/**
* Is Selection Selected
* @param source CheckBox or RadioButton
* @return true if selected
*/
private boolean isSelectionSelected (Object source)
{
boolean retValue = false;
if (source instanceof JCheckBox)
retValue = ((JCheckBox)source).isSelected();
else if (source instanceof JRadioButton)
retValue = ((JRadioButton)source).isSelected();
else
log.log(Level.SEVERE, "VBOMDrop.isSelectionSelected - not valid - " + source);
return retValue;
} // isSelected
/**************************************************************************
* Save Selection
*/
private boolean cmd_save()
{
KeyNamePair pp = (KeyNamePair)orderField.getSelectedItem();
if (pp != null && pp.getKey() > 0)
return cmd_saveOrder (pp.getKey());
//
pp = (KeyNamePair)invoiceField.getSelectedItem();
if (pp != null && pp.getKey() > 0)
return cmd_saveInvoice (pp.getKey());
//
pp = (KeyNamePair)projectField.getSelectedItem();
if (pp != null && pp.getKey() > 0)
return cmd_saveProject (pp.getKey());
//
log.log(Level.SEVERE, "cmd_save - nothing selected");
return false;
} // cmd_save
/**
* Save to Order
* @param C_Order_ID id
* @return true if saved
*/
private boolean cmd_saveOrder (int C_Order_ID)
{
log.config( "VBOMDrop.cmd_saveOrder - C_Order_ID=" + C_Order_ID);
MOrder order = new MOrder (Env.getCtx(), C_Order_ID, null);
if (order.get_ID() == 0)
{
log.log(Level.SEVERE, "VBOMDrop.cmd_saveOrder - Not found - C_Order_ID=" + C_Order_ID);
return false;
}
int lineCount = 0;
// for all bom lines
for (int i = 0; i < m_selectionList.size(); i++)
{
if (isSelectionSelected(m_selectionList.get(i)))
{
BigDecimal qty = (BigDecimal)((VNumber)m_qtyList.get(i)).getValue();
int M_Product_ID = ((Integer)m_productList.get(i)).intValue();
// Create Line
MOrderLine ol = new MOrderLine (order);
ol.setM_Product_ID(M_Product_ID, true);
ol.setQty(qty);
ol.setPrice();
ol.setTax();
if (ol.save())
lineCount++;
else
log.log(Level.SEVERE, "VBOMDrop.cmd_saveOrder - Line not saved");
} // line selected
} // for all bom lines
log.config( "VBOMDrop.cmd_saveOrder - #" + lineCount);
return true;
} // cmd_saveOrder
/**
* Save to Invoice
* @param C_Invoice_ID id
* @return true if saved
*/
private boolean cmd_saveInvoice (int C_Invoice_ID)
{
log.config("C_Invoice_ID=" + C_Invoice_ID);
MInvoice invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
if (invoice.get_ID() == 0)
{
log.log(Level.SEVERE, "Not found - C_Invoice_ID=" + C_Invoice_ID);
return false;
}
int lineCount = 0;
// for all bom lines
for (int i = 0; i < m_selectionList.size(); i++)
{
if (isSelectionSelected(m_selectionList.get(i)))
{
BigDecimal qty = (BigDecimal)((VNumber)m_qtyList.get(i)).getValue();
int M_Product_ID = ((Integer)m_productList.get(i)).intValue();
// Create Line
MInvoiceLine il = new MInvoiceLine (invoice);
il.setM_Product_ID(M_Product_ID, true);
il.setQty(qty);
il.setPrice();
il.setTax();
if (il.save())
lineCount++;
else
log.log(Level.SEVERE, "VBOMDrop.cmd_saveInvoice - Line not saved");
} // line selected
} // for all bom lines
log.config( "VBOMDrop.cmd_saveInvoice - #" + lineCount);
return true;
} // cmd_saveInvoice
/**
* Save to Project
* @param C_Project_ID id
* @return true if saved
*/
private boolean cmd_saveProject (int C_Project_ID)
{
log.config( "VBOMDrop.cmd_saveProject - C_Project_ID=" + C_Project_ID);
MProject project = new MProject (Env.getCtx(), C_Project_ID, null);
if (project.get_ID() == 0)
{
log.log(Level.SEVERE, "VBOMDrop.cmd_saveProject - Not found - C_Project_ID=" + C_Project_ID);
return false;
}
int lineCount = 0;
// for all bom lines
for (int i = 0; i < m_selectionList.size(); i++)
{
if (isSelectionSelected(m_selectionList.get(i)))
{
BigDecimal qty = (BigDecimal)((VNumber)m_qtyList.get(i)).getValue();
int M_Product_ID = ((Integer)m_productList.get(i)).intValue();
// Create Line
MProjectLine pl = new MProjectLine (project);
pl.setM_Product_ID(M_Product_ID);
pl.setPlannedQty(qty);
// pl.setPlannedPrice();
if (pl.save())
lineCount++;
else
log.log(Level.SEVERE, "VBOMDrop.cmd_saveProject - Line not saved");
} // line selected
} // for all bom lines
log.config( "VBOMDrop.cmd_saveProject - #" + lineCount);
return true;
} // cmd_saveProject
} // VBOMDrop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -