Author: jleroux
Date: Fri Jan 25 08:45:21 2008 New Revision: 615262 URL: http://svn.apache.org/viewvc?rev=615262&view=rev Log: From a slightly modified Chris Lombardi's patch "XUI update to x3.2rc2b" (see comments in https://issues.apache.org/jira/browse/OFBIZ-1580) - OFBIZ-1580 I will remove the old XUI jar later Added: ofbiz/trunk/framework/guiapp/lib/XuiCoreSwing-v3.2rc2b.jar (with props) ofbiz/trunk/framework/guiapp/lib/XuiOptional-v3.2rc2b.jar (with props) Modified: ofbiz/trunk/.classpath ofbiz/trunk/framework/base/config/pos-containers.xml ofbiz/trunk/framework/guiapp/src/org/ofbiz/guiapp/xui/XuiContainer.java ofbiz/trunk/specialpurpose/pos/config/xpos.properties ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Journal.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/PosButton.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/LoadSale.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PaidInOut.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SaveSale.java ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SelectProduct.java Modified: ofbiz/trunk/.classpath URL: http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/.classpath (original) +++ ofbiz/trunk/.classpath Fri Jan 25 08:45:21 2008 @@ -48,7 +48,8 @@ <classpathentry kind="lib" path="framework/jetty/lib/org.mortbay.jetty.jar"/> <classpathentry kind="lib" path="framework/jetty/lib/jasper-runtime.jar"/> <classpathentry kind="lib" path="framework/jetty/lib/jasper-compiler.jar"/> - <classpathentry kind="lib" path="framework/guiapp/lib/XuiCoreSwing_v2_0_6_jdk1_5.jar"/> + <classpathentry kind="lib" path="framework/guiapp/lib/XuiCoreSwing-v3.2rc2b.jar"/> + <classpathentry kind="lib" path="framework/guiapp/lib/XuiOptional-v3.2rc2b.jar"/> <classpathentry kind="lib" path="applications/content/lib/poi.jar"/> <classpathentry kind="lib" path="applications/content/lib/lucene-2.2.0.jar"/> <classpathentry kind="lib" path="framework/catalina/lib/tomcat-util.jar"/> Modified: ofbiz/trunk/framework/base/config/pos-containers.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/config/pos-containers.xml?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/framework/base/config/pos-containers.xml (original) +++ ofbiz/trunk/framework/base/config/pos-containers.xml Fri Jan 25 08:45:21 2008 @@ -44,8 +44,9 @@ <!-- load the POS GUI --> <container name="pos-container" class="org.ofbiz.pos.container.PosContainer"> - <property name="startup-directory" value="/specialpurpose/pos/config/"/> + <property name="startup-directory" value="specialpurpose/pos/config/"/> <property name="startup-file" value="xpos.properties"/> + <property name="class-package-name " value="net.xoetrope.swing"/> <property name="dispatcher-name" value="POSDispatcher"/> <property name="delegator-name" value="default"/> <property name="xui-session-id" value="pos-1"/> Added: ofbiz/trunk/framework/guiapp/lib/XuiCoreSwing-v3.2rc2b.jar URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/guiapp/lib/XuiCoreSwing-v3.2rc2b.jar?rev=615262&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/guiapp/lib/XuiCoreSwing-v3.2rc2b.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/trunk/framework/guiapp/lib/XuiOptional-v3.2rc2b.jar URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/guiapp/lib/XuiOptional-v3.2rc2b.jar?rev=615262&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/guiapp/lib/XuiOptional-v3.2rc2b.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: ofbiz/trunk/framework/guiapp/src/org/ofbiz/guiapp/xui/XuiContainer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/guiapp/src/org/ofbiz/guiapp/xui/XuiContainer.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/framework/guiapp/src/org/ofbiz/guiapp/xui/XuiContainer.java (original) +++ ofbiz/trunk/framework/guiapp/src/org/ofbiz/guiapp/xui/XuiContainer.java Fri Jan 25 08:45:21 2008 @@ -31,16 +31,13 @@ import org.ofbiz.base.util.UtilValidate; import org.ofbiz.entity.GenericDelegator; import org.ofbiz.service.GenericDispatcher; -import org.ofbiz.service.GenericServiceException; import org.ofbiz.service.LocalDispatcher; import org.ofbiz.base.util.UtilProperties; public abstract class XuiContainer implements Container { public static final String module = XuiContainer.class.getName(); - protected static XuiSession session = null; - - protected XuiScreen initialScreen = null; + protected static XuiSession xuiSession = null; protected String startupDir = null; protected String startupFile = null; @@ -85,19 +82,24 @@ } // create and cache the session - session = new XuiSession(xuiSessionId, delegator, dispatcher, this); - + xuiSession = new XuiSession(xuiSessionId, delegator, dispatcher, this); + // configure the rest of the container this.configure(cc); // load the XUI and render the initial screen if (this.startupFile == null) { - this.startupDir = ContainerConfig.getPropertyValue(cc, "startup-directory", "/specialpurpose/pos/config/"); + this.startupDir = ContainerConfig.getPropertyValue(cc, "startup-directory", "specialpurpose/pos/config/"); this.startupFile = ContainerConfig.getPropertyValue(cc, "startup-file", "xpos.properties"); } - this.initialScreen = new XuiScreen(); - this.initialScreen.setup(this.startupDir, this.startupFile); + String classPackageName = ContainerConfig.getPropertyValue(cc, "class-package-name", "net.xoetrope.swing"); + + JFrame jframe = new JFrame(); + jframe.setUndecorated(true); + new XuiScreen( + new String[] { this.startupDir + this.startupFile, + classPackageName}, jframe); return true; } @@ -124,25 +126,30 @@ public abstract void configure(ContainerConfig.Container cc) throws ContainerException; public static XuiSession getSession() { - return session; + return xuiSession; } class XuiScreen extends XApplet { - - public void setup(String startupDir, String startupFile) { - String xuiProps = System.getProperty("ofbiz.home") + startupDir + startupFile; + protected String startupProperties = ""; + + public XuiScreen(String[] args, JFrame frame) { + super(args, frame); + if(args.length > 0) { + startupProperties = args[0]; + } String suffix = Locale.getDefault().getLanguage(); if ("en".equals(suffix)) { suffix = ""; } else { suffix = "_" + suffix; } - UtilProperties.setPropertyValue(xuiProps, "Language", "XuiLabels" + suffix); - JFrame frame = new JFrame(); - frame.setUndecorated(true); - frame.setVisible(false); - frame.getContentPane().add(this); - super.setup(frame, new String[] { startupFile }); - } + String language = UtilProperties.getPropertyValue(startupProperties, "Language"); + if(language.compareTo("XuiLabels" + suffix ) != 0){ + UtilProperties.setPropertyValue(startupProperties, "Language", "XuiLabels" + suffix); + } + frame.setVisible(true); + frame.getContentPane().add(this); + frame.validate(); + } } } Modified: ofbiz/trunk/specialpurpose/pos/config/xpos.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/xpos.properties?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/config/xpos.properties (original) +++ ofbiz/trunk/specialpurpose/pos/config/xpos.properties Fri Jan 25 08:45:21 2008 @@ -28,3 +28,5 @@ UseFrames=false StartPackage=org.ofbiz.pos LogLevel=0 +StartClass=specialpurpose/pos/screens/default/pospanel +StartPackage=org.ofbiz.pos Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java Fri Jan 25 08:45:21 2008 @@ -865,7 +865,7 @@ double subTotal = unitPrice * quantity; double adjustment = item.getOtherAdjustments(); - XModel line = Journal.appendNode(model, "tr", "", ""); + XModel line = Journal.appendNode(model, "tr", ""+cart.getItemIndex(item), ""); Journal.appendNode(line, "td", "sku", item.getProductId()); Journal.appendNode(line, "td", "desc", item.getName()); Journal.appendNode(line, "td", "qty", UtilFormatOut.formatQuantity(quantity)); @@ -880,10 +880,10 @@ pcw = item.getConfigWrapper(); List selected = pcw.getSelectedOptions(); Iterator iter = selected.iterator(); - while(iter.hasNext()){ + while(iter.hasNext()){ ConfigOption configoption = (ConfigOption)iter.next(); if (configoption.isSelected()){ - XModel option = Journal.appendNode(model, "tr", "", ""); + XModel option = Journal.appendNode(model, "tr", ""+cart.getItemIndex(item), ""); Journal.appendNode(option, "td", "sku", ""); Journal.appendNode(option, "td", "desc", configoption.getDescription()); Journal.appendNode(option, "td", "qty", ""); @@ -895,7 +895,7 @@ if (adjustment != 0) { // append the promo info - XModel promo = Journal.appendNode(model, "tr", "", ""); + XModel promo = Journal.appendNode(model, "tr", "itemadjustment", ""); Journal.appendNode(promo, "td", "sku", ""); Journal.appendNode(promo, "td", "desc", UtilProperties.getMessage("pos","(ItemDiscount)",defaultLocale)); Journal.appendNode(promo, "td", "qty", ""); @@ -915,28 +915,31 @@ Iterator iter = adjustments.iterator(); while(iter.hasNext()){ GenericValue orderAdjustment = (GenericValue) iter.next(); - XModel adjustmentLine = Journal.appendNode(model, "tr", "", ""); + XModel adjustmentLine = Journal.appendNode(model, "tr", "adjustment", ""); Journal.appendNode(adjustmentLine, "td", "sku", ""); Journal.appendNode(adjustmentLine, "td", "desc", UtilProperties.getMessage("pos", "(SalesDiscount)",defaultLocale)); Journal.appendNode(adjustmentLine, "td", "qty", ""); Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(orderAdjustment.getDouble("amount"))); + Journal.appendNode(adjustmentLine, "td", "index", "-1"); } } - XModel taxLine = Journal.appendNode(model, "tr", "", ""); + XModel taxLine = Journal.appendNode(model, "tr", "tax", ""); Journal.appendNode(taxLine, "td", "sku", ""); Journal.appendNode(taxLine, "td", "desc", UtilProperties.getMessage("pos","Sales_Tax",defaultLocale)); Journal.appendNode(taxLine, "td", "qty", ""); Journal.appendNode(taxLine, "td", "price", UtilFormatOut.formatPrice(taxAmount)); - - XModel totalLine = Journal.appendNode(model, "tr", "", ""); + Journal.appendNode(taxLine, "td", "index", "-1"); + + XModel totalLine = Journal.appendNode(model, "tr", "total", ""); Journal.appendNode(totalLine, "td", "sku", ""); Journal.appendNode(totalLine, "td", "desc", UtilProperties.getMessage("pos","Grand_Total",defaultLocale)); Journal.appendNode(totalLine, "td", "qty", ""); Journal.appendNode(totalLine, "td", "price", UtilFormatOut.formatPrice(total)); + Journal.appendNode(totalLine, "td", "index", "-1"); } } Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Journal.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Journal.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Journal.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Journal.java Fri Jan 25 08:45:21 2008 @@ -18,23 +18,31 @@ *******************************************************************************/ package org.ofbiz.pos.component; +import java.io.StringWriter; import java.util.Locale; +import javax.swing.ListSelectionModel; +import javax.swing.ScrollPaneConstants; +import net.xoetrope.data.XDataSource; import net.xoetrope.swing.XTable; import net.xoetrope.swing.XScrollPane; +import net.xoetrope.xui.XProject; +import net.xoetrope.xui.XProjectManager; import net.xoetrope.xui.data.XModel; import org.ofbiz.pos.PosTransaction; import org.ofbiz.pos.screen.PosScreen; import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.base.util.Debug; public class Journal { public static final String module = Journal.class.getName(); - - private static String[] field = { "sku", "desc", "qty", "price", "index" }; - private static String[] name = { "SKU", "ITEM", "QTY", "AMT", "" }; - private static int[] width = { 100, 170, 60, 80, 0}; + protected XProject currentProject = (XProject)XProjectManager.getCurrentProject(); + + private static String[] field = { "sku", "desc", "qty", "price" }; + private static String[] name = { "SKU", "ITEM", "QTY", "AMT" }; + private static int[] width = { 100, 170, 50, 90}; private Locale defaultLocale = Locale.getDefault(); protected XScrollPane jpanel = null; @@ -45,12 +53,17 @@ //The vertical bar is always visible to allow access to horizontal bar without shrink the journal panel this.jpanel = (XScrollPane) page.findComponent("journal_panel"); this.jpanel.setVisible(false); + this.jpanel.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + this.jpanel.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); this.jtable = (XTable) page.findComponent("jtable"); - + // set the table as selectable jtable.setInteractiveTable(true); jtable.setFocusable(false); + jtable.setDragEnabled(false); + jtable.setColumnSelectionAllowed(false); + jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // set the styles jtable.setBorderStyle("journalBorder"); @@ -65,6 +78,7 @@ jtable.setModel(jmodel); for (int i = 0; i < width.length; i++) { + //causes infinite loop jtable.setColWidth(i, width[i]); } } @@ -72,15 +86,15 @@ } public String getSelectedSku() { - XModel jmodel = (XModel) XModel.getInstance().get("journal/items"); + XModel jmodel = jtable.getXModel(); XModel model = jmodel.get(jtable.getSelectedRow() + 1); return model.getValueAsString("sku"); } public String getSelectedIdx() { - XModel jmodel = (XModel) XModel.getInstance().get("journal/items"); + XModel jmodel = jtable.getXModel(); XModel model = jmodel.get(jtable.getSelectedRow() + 1); - return model.getValueAsString("index"); + return model.getId(); } public void selectNext() { @@ -102,12 +116,13 @@ jtable.setFocusable(!lock); jtable.setVisible(!lock); jtable.setEnabled(!lock); + this.jpanel.setVisible(!lock); if (!lock) { this.jpanel.setVisible(true); } } - public void refresh(PosScreen pos) { + public synchronized void refresh(PosScreen pos) { if (!jtable.isEnabled()) { // no point in refreshing when we are locked; // we will auto-refresh when unlocked @@ -133,27 +148,26 @@ // make sure we are at the last item in the journal jtable.setSelectedRow(0); - + try { - jtable.repaint(); + jtable.update(); } catch (ArrayIndexOutOfBoundsException e) { - // bug in XUI causes this; ignore for now - // it has been reported and will be fixed soon + Debug.logError(e, "Unable to repaint the Journal", module); } + //Debug.logInfo(getModelText(jmodel), module); } private XModel createModel() { - XModel jmodel = (XModel) XModel.getInstance().get("journal/items"); - + XModel jmodel = (XModel)currentProject.getModel().get("table/items"); // clear the list jmodel.clear(); - + if (field.length == 0) { return null; } - + jmodel.setTagName("table"); // create the header - XModel headerNode = appendNode(jmodel, "th", "", ""); + XModel headerNode = appendNode(jmodel, "th", "header", ""); for (int i = 0 ; i < field.length; i++) { appendNode(headerNode, "td", field[i],UtilProperties.getMessage("pos",name[i],defaultLocale)); } @@ -162,7 +176,7 @@ } private void appendEmpty(XModel jmodel) { - XModel headerNode = appendNode(jmodel, "tr", "", ""); + XModel headerNode = appendNode(jmodel, "tr", "emptyrow", ""); for (int i = 0 ; i < field.length; i++) { appendNode(headerNode, "td", field[i], ""); } @@ -173,7 +187,14 @@ newNode.setTagName(tag); if (value != null) { newNode.set(value); - } + } return newNode; } -} + + private String getModelText(XModel model) + { + StringWriter sw = new StringWriter(); + XDataSource.outputModel( sw, model ); + return "<Datasets>" + sw.toString() + "</Datasets>"; + } +} \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/PosButton.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/PosButton.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/PosButton.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/PosButton.java Fri Jan 25 08:45:21 2008 @@ -27,7 +27,8 @@ import net.xoetrope.swing.XButton; import net.xoetrope.xui.helper.SwingWorker; - +import net.xoetrope.xui.events.XEventHelper; + import org.ofbiz.base.config.GenericConfigException; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilValidate; @@ -62,7 +63,7 @@ if (UtilValidate.isEmpty(buttonName)) { wrapper.setEnabled(false); } else { - pos.addActionHandler(button, PosScreen.BUTTON_ACTION_METHOD); + XEventHelper.addActionHandler(pos, button, PosScreen.BUTTON_ACTION_METHOD); loadedXButtons.put(button.getName(), wrapper); } } Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java Fri Jan 25 08:45:21 2008 @@ -35,6 +35,7 @@ import net.xoetrope.swing.XList; import net.xoetrope.swing.XScrollPane; import net.xoetrope.xui.XPage; +import net.xoetrope.xui.events.XEventHelper; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilProperties; @@ -81,7 +82,6 @@ // cache must be set to false because there's no method to remove actionhandlers m_dialog = (XDialog) pageMgr.loadPage( m_pos.getScreenLocation() + "/dialog/ConfigureItem", false); - //TODO: change caption m_dialog.setCaption(UtilProperties.getMessage("pos", "ConfigureItem", Locale.getDefault())); m_optionListPane = (XScrollPane) m_dialog.findComponent("optionListPane"); @@ -90,8 +90,8 @@ m_ok = (XButton) m_dialog.findComponent("BtnOk"); m_reset = (XButton) m_dialog.findComponent("BtnReset"); - addMouseHandler(m_ok, "ok"); - addMouseHandler(m_reset, "reset"); + XEventHelper.addMouseHandler(this, m_ok, "ok"); + XEventHelper.addMouseHandler(this, m_reset, "reset"); getButtons(); //debugQuestions(); @@ -119,13 +119,15 @@ } public synchronized void buttonPressed() { - EventObject eo = getCurrentEvent(); - XButton button = (XButton) eo.getSource(); - Question question = (Question)questionHashMap.get(button.getName()); - question.buttonClicked(); - showItem(); - m_dialog.repaint(); - return; + if (wasMouseClicked()) { + EventObject eo = getCurrentEvent(); + XButton button = (XButton) eo.getSource(); + Question question = (Question)questionHashMap.get(button.getName()); + question.buttonClicked(); + showItem(); + m_dialog.repaint(); + return; + } } public synchronized void listPressed() { @@ -193,7 +195,7 @@ if(buttonQuestion instanceof ListQuestion){ ((ListQuestion)buttonQuestion).setupListPane(m_optionListPane); } - addActionHandler(button, "buttonPressed"); + XEventHelper.addMouseHandler(this, button, "buttonPressed"); } } return; Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/LoadSale.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/LoadSale.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/LoadSale.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/LoadSale.java Fri Jan 25 08:45:21 2008 @@ -1,244 +1,245 @@ -/******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - *******************************************************************************/ -package org.ofbiz.pos.screen; - -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Locale; -import java.util.Map; - -import javax.swing.DefaultListModel; -import javax.swing.ListSelectionModel; - -import net.xoetrope.swing.XButton; -import net.xoetrope.swing.XDialog; -import net.xoetrope.swing.XList; -import net.xoetrope.xui.XPage; - -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilProperties; -import org.ofbiz.pos.PosTransaction; - - -public class LoadSale extends XPage { - - /** - * To load a sale from a shopping list. 2 modes : add to or replace the current sale. Also a button to delete a sale (aka shopping list) - */ - public static final String module = LoadSale.class.getName(); - protected static PosScreen m_pos = null; - protected XDialog m_dialog = null; - static protected Hashtable m_saleMap = new Hashtable(); - protected XList m_salesList = null; - protected XButton m_cancel = null; - protected XButton m_add = null; - protected XButton m_replace = null; - protected XButton m_delete = null; - protected XButton m_replaceAndDelete = null; - protected DefaultListModel m_listModel = null; - protected static PosTransaction m_trans = null; - - //TODO : make getter and setter for members (ie m_*) if needed (extern calls). For that in Eclipse use Source/Generate Getters and setters - - public LoadSale(Hashtable saleMap, PosTransaction trans, PosScreen page) { - m_saleMap.putAll(saleMap); - m_trans = trans; - m_pos = page; - } - - public void openDlg() { - m_dialog = (XDialog) pageMgr.loadPage(m_pos.getScreenLocation() + "/dialog/loadsale"); - m_dialog.setCaption(UtilProperties.getMessage("pos", "LoadASale", Locale.getDefault())); - m_salesList = (XList) m_dialog.findComponent("salesList"); - addMouseHandler(m_salesList, "saleDoubleClick"); - - m_cancel = (XButton) m_dialog.findComponent("BtnCancel"); - m_add = (XButton) m_dialog.findComponent("BtnAdd"); - m_replace = (XButton) m_dialog.findComponent("BtnReplace"); - m_delete = (XButton) m_dialog.findComponent("BtnDelete"); - m_replaceAndDelete = (XButton) m_dialog.findComponent("BtnReplaceAndDelete"); - addMouseHandler(m_cancel, "cancel"); - addMouseHandler(m_add, "addSale"); - addMouseHandler(m_replace, "replaceSale"); - addMouseHandler(m_delete, "deleteShoppingList"); - addMouseHandler(m_replaceAndDelete, "replaceSaleAndDeleteShoppingList"); - - m_listModel = new DefaultListModel(); - for (Iterator i = m_saleMap.entrySet().iterator(); i.hasNext();) { - Object o = i.next(); - Map.Entry entry = (Map.Entry)o; - String val = entry.getValue().toString(); - m_listModel.addElement(val); - } - m_salesList.setModel(m_listModel); - m_salesList.setVisibleRowCount(-1); - m_salesList.ensureIndexIsVisible(m_salesList.getItemCount()); - m_salesList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - m_salesList.setToolTipText(UtilProperties.getMessage("pos", "LoadSaleListDblClickTip", Locale.getDefault())); - - m_dialog.pack(); - m_salesList.requestFocusInWindow(); - m_dialog.showDialog(this); - } - - public synchronized void saleDoubleClick() { - if (wasMouseDoubleClicked()) { - String sale = selectedSale(); - if (null != sale) { - replaceSaleAndDeleteShoppingList_(); - } - } - } - - public synchronized void cancel() { - if (wasMouseClicked()) { - closeDlg(); - } - } - - public synchronized void addSale() { - if (wasMouseClicked()) { - addSale_(); - } - } - - private synchronized void addSale_() { - String sale = selectedSale(); - if (null != sale) { - addListToCart(sale, true); - } - } - - public synchronized void replaceSale() { - if (wasMouseClicked()) { - replaceSale_(); - } - } - - private synchronized void replaceSale_() { - String sale = selectedSale(); - if (null != sale) { - addListToCart(sale, false); - } - } - - public synchronized void deleteShoppingList() { - if (wasMouseClicked()) { - deleteShoppingList_(); - } - } - - private synchronized void deleteShoppingList_() { - String sale= (String) m_salesList.getSelectedValue(); - if (null != sale) { - String shoppingListId = selectedSale(); - final ClassLoader cl = this.getClassLoader(m_pos); - Thread.currentThread().setContextClassLoader(cl); - if (m_trans.clearList(shoppingListId, m_pos)) { - int index = m_salesList.getSelectedIndex(); - m_saleMap.remove(shoppingListId); - m_listModel = new DefaultListModel(); - for (Iterator i = m_saleMap.entrySet().iterator(); i.hasNext();) { - Object o = i.next(); - Map.Entry entry = (Map.Entry)o; - String val = entry.getValue().toString(); - m_listModel.addElement(val); - } - m_salesList.setModel(m_listModel); - int size = m_listModel.getSize(); - if (size == 0) { //Nobody's left, nothing to do here - closeDlg(); - } else { //Select an index. - if (index == size) { - //removed item in last position - index--; - } - } - m_salesList.setSelectedIndex(index); - m_salesList.ensureIndexIsVisible(index); - m_salesList.repaint(); - repaint(); - } - } - } - - public synchronized void replaceSaleAndDeleteShoppingList() { - if (wasMouseClicked()) { - replaceSaleAndDeleteShoppingList_(); - } - } - - public synchronized void replaceSaleAndDeleteShoppingList_() { - replaceSale_(); - deleteShoppingList_(); - } - - private String selectedSale() { - String saleSelected = null; - if (null != m_salesList.getSelectedValue()) { - String sale = (String) m_salesList.getSelectedValue(); - Iterator i = m_saleMap.entrySet().iterator(); - while(i.hasNext()) { - Object o = i.next(); - Map.Entry entry = (Map.Entry)o; - String val = entry.getValue().toString(); - if (val.equals(sale)) { - saleSelected = entry.getKey().toString(); - } - } - } - return saleSelected; - } - - private void addListToCart(String sale, boolean addToCart) { - final ClassLoader cl = this.getClassLoader(m_pos); - Thread.currentThread().setContextClassLoader(cl); - if (!m_trans.addListToCart(sale, m_pos, addToCart)) { - Debug.logError("Error while loading cart from shopping list : " + sale, module); - } - else { - m_trans.calcTax(); - m_pos.refresh(); - } - closeDlg(); - } - - private ClassLoader getClassLoader(PosScreen pos) { - ClassLoader cl = pos.getClassLoader(); - if (cl == null) { - try { - cl = Thread.currentThread().getContextClassLoader(); - } catch (Throwable t) { - } - if (cl == null) { - Debug.log("No context classloader available; using class classloader", module); - try { - cl = this.getClass().getClassLoader(); - } catch (Throwable t) { - Debug.logError(t, module); - } - } - } - return cl; - } - - private void closeDlg() { - m_dialog.closeDlg(); - } +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.pos.screen; + +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; + +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; + +import net.xoetrope.swing.XButton; +import net.xoetrope.swing.XDialog; +import net.xoetrope.swing.XList; +import net.xoetrope.xui.XPage; +import net.xoetrope.xui.events.XEventHelper; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.pos.PosTransaction; + + +public class LoadSale extends XPage { + + /** + * To load a sale from a shopping list. 2 modes : add to or replace the current sale. Also a button to delete a sale (aka shopping list) + */ + public static final String module = LoadSale.class.getName(); + protected static PosScreen m_pos = null; + protected XDialog m_dialog = null; + static protected Hashtable m_saleMap = new Hashtable(); + protected XList m_salesList = null; + protected XButton m_cancel = null; + protected XButton m_add = null; + protected XButton m_replace = null; + protected XButton m_delete = null; + protected XButton m_replaceAndDelete = null; + protected DefaultListModel m_listModel = null; + protected static PosTransaction m_trans = null; + + //TODO : make getter and setter for members (ie m_*) if needed (extern calls). For that in Eclipse use Source/Generate Getters and setters + + public LoadSale(Hashtable saleMap, PosTransaction trans, PosScreen page) { + m_saleMap.putAll(saleMap); + m_trans = trans; + m_pos = page; + } + + public void openDlg() { + m_dialog = (XDialog) pageMgr.loadPage(m_pos.getScreenLocation() + "/dialog/loadsale"); + m_dialog.setCaption(UtilProperties.getMessage("pos", "LoadASale", Locale.getDefault())); + m_salesList = (XList) m_dialog.findComponent("salesList"); + XEventHelper.addMouseHandler(this, m_salesList, "saleDoubleClick"); + + m_cancel = (XButton) m_dialog.findComponent("BtnCancel"); + m_add = (XButton) m_dialog.findComponent("BtnAdd"); + m_replace = (XButton) m_dialog.findComponent("BtnReplace"); + m_delete = (XButton) m_dialog.findComponent("BtnDelete"); + m_replaceAndDelete = (XButton) m_dialog.findComponent("BtnReplaceAndDelete"); + XEventHelper.addMouseHandler(this, m_cancel, "cancel"); + XEventHelper.addMouseHandler(this, m_replace, "replaceSale"); + XEventHelper.addMouseHandler(this, m_add, "addSale"); + XEventHelper.addMouseHandler(this, m_delete, "deleteShoppingList"); + XEventHelper.addMouseHandler(this, m_replaceAndDelete, "replaceSaleAndDeleteShoppingList"); + + m_listModel = new DefaultListModel(); + for (Iterator i = m_saleMap.entrySet().iterator(); i.hasNext();) { + Object o = i.next(); + Map.Entry entry = (Map.Entry)o; + String val = entry.getValue().toString(); + m_listModel.addElement(val); + } + m_salesList.setModel(m_listModel); + m_salesList.setVisibleRowCount(-1); + m_salesList.ensureIndexIsVisible(m_salesList.getItemCount()); + m_salesList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + m_salesList.setToolTipText(UtilProperties.getMessage("pos", "LoadSaleListDblClickTip", Locale.getDefault())); + + m_dialog.pack(); + m_salesList.requestFocusInWindow(); + m_dialog.showDialog(this); + } + + public synchronized void saleDoubleClick() { + if (wasMouseDoubleClicked()) { + String sale = selectedSale(); + if (null != sale) { + replaceSaleAndDeleteShoppingList_(); + } + } + } + + public synchronized void cancel() { + if (wasMouseClicked()) { + closeDlg(); + } + } + + public synchronized void addSale() { + if (wasMouseClicked()) { + addSale_(); + } + } + + private synchronized void addSale_() { + String sale = selectedSale(); + if (null != sale) { + addListToCart(sale, true); + } + } + + public synchronized void replaceSale() { + if (wasMouseClicked()) { + replaceSale_(); + } + } + + private synchronized void replaceSale_() { + String sale = selectedSale(); + if (null != sale) { + addListToCart(sale, false); + } + } + + public synchronized void deleteShoppingList() { + if (wasMouseClicked()) { + deleteShoppingList_(); + } + } + + private synchronized void deleteShoppingList_() { + String sale= (String) m_salesList.getSelectedValue(); + if (null != sale) { + String shoppingListId = selectedSale(); + final ClassLoader cl = this.getClassLoader(m_pos); + Thread.currentThread().setContextClassLoader(cl); + if (m_trans.clearList(shoppingListId, m_pos)) { + int index = m_salesList.getSelectedIndex(); + m_saleMap.remove(shoppingListId); + m_listModel = new DefaultListModel(); + for (Iterator i = m_saleMap.entrySet().iterator(); i.hasNext();) { + Object o = i.next(); + Map.Entry entry = (Map.Entry)o; + String val = entry.getValue().toString(); + m_listModel.addElement(val); + } + m_salesList.setModel(m_listModel); + int size = m_listModel.getSize(); + if (size == 0) { //Nobody's left, nothing to do here + closeDlg(); + } else { //Select an index. + if (index == size) { + //removed item in last position + index--; + } + } + m_salesList.setSelectedIndex(index); + m_salesList.ensureIndexIsVisible(index); + m_salesList.repaint(); + repaint(); + } + } + } + + public synchronized void replaceSaleAndDeleteShoppingList() { + if (wasMouseClicked()) { + replaceSaleAndDeleteShoppingList_(); + } + } + + public synchronized void replaceSaleAndDeleteShoppingList_() { + replaceSale_(); + deleteShoppingList_(); + } + + private String selectedSale() { + String saleSelected = null; + if (null != m_salesList.getSelectedValue()) { + String sale = (String) m_salesList.getSelectedValue(); + Iterator i = m_saleMap.entrySet().iterator(); + while(i.hasNext()) { + Object o = i.next(); + Map.Entry entry = (Map.Entry)o; + String val = entry.getValue().toString(); + if (val.equals(sale)) { + saleSelected = entry.getKey().toString(); + } + } + } + return saleSelected; + } + + private void addListToCart(String sale, boolean addToCart) { + final ClassLoader cl = this.getClassLoader(m_pos); + Thread.currentThread().setContextClassLoader(cl); + if (!m_trans.addListToCart(sale, m_pos, addToCart)) { + Debug.logError("Error while loading cart from shopping list : " + sale, module); + } + else { + m_trans.calcTax(); + m_pos.refresh(); + } + closeDlg(); + } + + private ClassLoader getClassLoader(PosScreen pos) { + ClassLoader cl = pos.getClassLoader(); + if (cl == null) { + try { + cl = Thread.currentThread().getContextClassLoader(); + } catch (Throwable t) { + } + if (cl == null) { + Debug.log("No context classloader available; using class classloader", module); + try { + cl = this.getClass().getClassLoader(); + } catch (Throwable t) { + Debug.logError(t, module); + } + } + } + return cl; + } + + private void closeDlg() { + m_dialog.closeDlg(); + } } Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PaidInOut.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PaidInOut.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PaidInOut.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PaidInOut.java Fri Jan 25 08:45:21 2008 @@ -33,6 +33,7 @@ import net.xoetrope.swing.XLabel; import net.xoetrope.swing.XComboBox; import net.xoetrope.xui.XPage; +import net.xoetrope.xui.events.XEventHelper; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; @@ -76,8 +77,9 @@ m_ok = (XButton) m_dialog.findComponent("BtnOk"); m_amoutLabel = (XLabel) m_dialog.findComponent("amoutLabel"); m_reasonLabel = (XLabel) m_dialog.findComponent("reasonLabel"); - addMouseHandler(m_cancel, "cancel"); - addMouseHandler(m_ok, "verify"); + + XEventHelper.addMouseHandler(this, m_cancel, "cancel"); + XEventHelper.addMouseHandler(this, m_ok, "verify"); m_comboModel = new DefaultComboBoxModel(); ResourceBundle reasons = null; Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java Fri Jan 25 08:45:21 2008 @@ -29,6 +29,7 @@ import net.xoetrope.builder.NavigationHelper; import net.xoetrope.xui.XPage; +import net.xoetrope.xui.XProject; import net.xoetrope.xui.XProjectManager; import org.ofbiz.base.splash.SplashLoader; @@ -55,6 +56,7 @@ public static final long MAX_INACTIVITY = 1800000; public static PosScreen currentScreen; + protected XProject currentProject = (XProject)XProjectManager.getCurrentProject(); protected static boolean monitorRunning = false; protected static boolean firstInit = false; protected static long lastActivity = 0; @@ -98,9 +100,10 @@ firstInit = true; // pre-load a few screens - XProjectManager.getPageManager().loadPage(this.getScreenLocation() + "/paypanel"); - XProjectManager.getPageManager().loadPage(this.getScreenLocation() + "/mgrpanel"); - XProjectManager.getPageManager().loadPage(this.getScreenLocation() + "/promopanel"); + + currentProject.getPageManager().loadPage(this.getScreenLocation() + "/paypanel"); + currentProject.getPageManager().loadPage(this.getScreenLocation() + "/mgrpanel"); + currentProject.getPageManager().loadPage(this.getScreenLocation() + "/promopanel"); // start the shared monitor thread if (activityMonitor == null) { @@ -300,7 +303,7 @@ if (pageName.startsWith("/")) { pageName = pageName.substring(1); } - XPage newPage = (XPage)XProjectManager.getPageManager().showPage(this.getScreenLocation() + "/" + pageName); + XPage newPage = (XPage)currentProject.getPageManager().showPage(this.getScreenLocation() + "/" + pageName); if (newPage instanceof PosScreen) { if (refresh) ((PosScreen) newPage).refresh(); return (PosScreen) newPage; @@ -336,7 +339,7 @@ if (pageName.startsWith("/")) { pageName = pageName.substring(1); } - XPage dialogPage = (XPage)XProjectManager.getPageManager().loadPage(this.getScreenLocation() + "/" + pageName); + XPage dialogPage = (XPage)currentProject.getPageManager().loadPage(this.getScreenLocation() + "/" + pageName); PosDialog dialog = PosDialog.getInstance(dialogPage, true, 0); dialog.showDialog(this, cb, text); return dialog; @@ -383,7 +386,7 @@ if (this.scrLocation == null) { String xuiProps = this.getSession().getContainer().getXuiPropertiesName(); String startClass = UtilProperties.getPropertyValue(xuiProps, "StartClass", "default/pospanel"); - this.scrLocation = startClass.substring(0, startClass.indexOf("/")); + this.scrLocation = startClass.substring(0, startClass.lastIndexOf("/")); } } } Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SaveSale.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SaveSale.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SaveSale.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SaveSale.java Fri Jan 25 08:45:21 2008 @@ -1,129 +1,131 @@ -/******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - *******************************************************************************/ -package org.ofbiz.pos.screen; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -import net.xoetrope.swing.XButton; -//import org.ofbiz.pos.screen.XFocusDialog; -import net.xoetrope.swing.XEdit; -import net.xoetrope.swing.XDialog; -import net.xoetrope.xui.XPage; - -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilProperties; -import org.ofbiz.pos.PosTransaction; - - -public class SaveSale extends XPage { - - /** - * To save a sale. 2 modes : save and keep the current sale or save and clear the current sale. - */ - public static final String module = SaveSale.class.getName(); - protected static PosScreen m_pos = null; - protected XDialog m_dialog = null; - protected XEdit m_saleName = null; - protected XButton m_cancel = null; - protected XButton m_save = null; - protected XButton m_saveAndClear = null; - protected static PosTransaction m_trans = null; - public static SimpleDateFormat sdf = new SimpleDateFormat(UtilProperties.getMessage("pos","DateTimeFormat",Locale.getDefault())); - - //TODO : make getter and setter for members (ie m_*) if needed (extern calls). For that in Eclipse use Source/Generate Getters and setters - - public SaveSale(PosTransaction trans, PosScreen page) { - m_trans = trans; - m_pos = page; - } - - public void openDlg() { - m_dialog = (XDialog) pageMgr.loadPage(m_pos.getScreenLocation() + "/dialog/savesale"); - m_saleName = (XEdit) m_dialog.findComponent("saleName"); - //m_dialog.setM_focused(m_saleName); - m_saleName.setText(m_pos.session.getUserId() + " " + sdf.format(new Date())); - m_dialog.setCaption(UtilProperties.getMessage("pos", "SaveASale", Locale.getDefault())); - - m_cancel = (XButton) m_dialog.findComponent("BtnCancel"); - m_save = (XButton) m_dialog.findComponent("BtnSave"); - m_saveAndClear = (XButton) m_dialog.findComponent("BtnSaveAndClear"); - - addMouseHandler(m_cancel, "cancel"); - addMouseHandler(m_save, "save"); - addMouseHandler(m_saveAndClear, "saveAndClear"); - - m_dialog.pack(); - m_dialog.showDialog(this); - } - - public synchronized void cancel() - { - if (wasMouseClicked()) { - this.m_dialog.closeDlg(); - } - } - - public synchronized void save() { - if (wasMouseClicked()) { - String sale = m_saleName.getText(); - if (null != sale) { - saveSale(sale); - } - } - } - - public synchronized void saveAndClear() { - if (wasMouseClicked()) { - String sale = m_saleName.getText(); - if (null != sale) { - saveSale(sale); - m_trans.voidSale(); - m_pos.refresh(); - } - } - } - - private void saveSale(String sale) { - final ClassLoader cl = this.getClassLoader(m_pos); - Thread.currentThread().setContextClassLoader(cl); - m_trans.saveSale(sale, m_pos); - this.m_dialog.closeDlg(); - } - - private ClassLoader getClassLoader(PosScreen pos) { - ClassLoader cl = pos.getClassLoader(); - if (cl == null) { - try { - cl = Thread.currentThread().getContextClassLoader(); - } catch (Throwable t) { - } - if (cl == null) { - Debug.log("No context classloader available; using class classloader", module); - try { - cl = this.getClass().getClassLoader(); - } catch (Throwable t) { - Debug.logError(t, module); - } - } - } - return cl; - } +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.pos.screen; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +import net.xoetrope.swing.XButton; +//import org.ofbiz.pos.screen.XFocusDialog; +import net.xoetrope.swing.XEdit; +import net.xoetrope.swing.XDialog; +import net.xoetrope.xui.XPage; +import net.xoetrope.xui.events.XEventHelper; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.pos.PosTransaction; + + +public class SaveSale extends XPage { + + /** + * To save a sale. 2 modes : save and keep the current sale or save and clear the current sale. + */ + public static final String module = SaveSale.class.getName(); + protected static PosScreen m_pos = null; + protected XDialog m_dialog = null; + protected XEdit m_saleName = null; + protected XButton m_cancel = null; + protected XButton m_save = null; + protected XButton m_saveAndClear = null; + protected static PosTransaction m_trans = null; + public static SimpleDateFormat sdf = new SimpleDateFormat(UtilProperties.getMessage("pos","DateTimeFormat",Locale.getDefault())); + + //TODO : make getter and setter for members (ie m_*) if needed (extern calls). For that in Eclipse use Source/Generate Getters and setters + + public SaveSale(PosTransaction trans, PosScreen page) { + m_trans = trans; + m_pos = page; + } + + public void openDlg() { + m_dialog = (XDialog) pageMgr.loadPage(m_pos.getScreenLocation() + "/dialog/savesale"); + m_saleName = (XEdit) m_dialog.findComponent("saleName"); + //m_dialog.setM_focused(m_saleName); + m_saleName.setText(m_pos.session.getUserId() + " " + sdf.format(new Date())); + m_dialog.setCaption(UtilProperties.getMessage("pos", "SaveASale", Locale.getDefault())); + + m_cancel = (XButton) m_dialog.findComponent("BtnCancel"); + m_save = (XButton) m_dialog.findComponent("BtnSave"); + m_saveAndClear = (XButton) m_dialog.findComponent("BtnSaveAndClear"); + + + XEventHelper.addMouseHandler(this, m_cancel, "cancel"); + XEventHelper.addMouseHandler(this, m_save, "save"); + XEventHelper.addMouseHandler(this, m_saveAndClear, "saveAndClear"); + + m_dialog.pack(); + m_dialog.showDialog(this); + } + + public synchronized void cancel() + { + if (wasMouseClicked()) { + this.m_dialog.closeDlg(); + } + } + + public synchronized void save() { + if (wasMouseClicked()) { + String sale = m_saleName.getText(); + if (null != sale) { + saveSale(sale); + } + } + } + + public synchronized void saveAndClear() { + if (wasMouseClicked()) { + String sale = m_saleName.getText(); + if (null != sale) { + saveSale(sale); + m_trans.voidSale(); + m_pos.refresh(); + } + } + } + + private void saveSale(String sale) { + final ClassLoader cl = this.getClassLoader(m_pos); + Thread.currentThread().setContextClassLoader(cl); + m_trans.saveSale(sale, m_pos); + this.m_dialog.closeDlg(); + } + + private ClassLoader getClassLoader(PosScreen pos) { + ClassLoader cl = pos.getClassLoader(); + if (cl == null) { + try { + cl = Thread.currentThread().getContextClassLoader(); + } catch (Throwable t) { + } + if (cl == null) { + Debug.log("No context classloader available; using class classloader", module); + try { + cl = this.getClass().getClassLoader(); + } catch (Throwable t) { + Debug.logError(t, module); + } + } + } + return cl; + } } Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SelectProduct.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SelectProduct.java?rev=615262&r1=615261&r2=615262&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SelectProduct.java (original) +++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/SelectProduct.java Fri Jan 25 08:45:21 2008 @@ -30,6 +30,7 @@ import net.xoetrope.swing.XDialog; import net.xoetrope.swing.XList; import net.xoetrope.xui.XPage; +import net.xoetrope.xui.events.XEventHelper; import org.ofbiz.base.util.UtilProperties; import org.ofbiz.pos.PosTransaction; @@ -65,12 +66,13 @@ dlg.setCaption(UtilProperties.getMessage("pos", "SelectAProduct", Locale.getDefault())); //dlg.setModal(true); m_productsList = (XList) dlg.findComponent("productsList"); - addMouseHandler(m_productsList, "DoubleClick"); + XEventHelper.addMouseHandler(this, m_productsList, "DoubleClick"); m_cancel = (XButton) dlg.findComponent("BtnCancel"); m_select = (XButton) dlg.findComponent("BtnSelect"); - addMouseHandler(m_cancel, "cancel"); - addMouseHandler(m_select, "selectProduct"); + + XEventHelper.addMouseHandler(this, m_cancel, "cancel"); + XEventHelper.addMouseHandler(this, m_select, "selectProduct"); m_listModel = new DefaultListModel(); for (Iterator i = m_productsMap.entrySet().iterator(); i.hasNext();) { |
Free forum by Nabble | Edit this page |