⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jticketlines.java

📁 是一个专门设计用于触摸屏的POS(point of sales)应用软件
💻 JAVA
字号:
//    Tina POS is a point of sales application designed for touch screens.//    Copyright (C) 2005 Adrian Romero Corchado.//    http://sourceforge.net/projects/tinapos////    This program is free software; you can redistribute it and/or modify//    it under the terms of the GNU General Public License as published by//    the Free Software Foundation; either version 2 of the License, or//    (at your option) any later version.////    This program is distributed in the hope that it will be useful,//    but WITHOUT ANY WARRANTY; without even the implied warranty of//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//    GNU General Public License for more details.////    You should have received a copy of the GNU General Public License//    along with this program; if not, write to the Free Software//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USApackage net.adrianromero.tpv.panelsales;import java.awt.Component;import java.awt.Dimension;import java.awt.Rectangle;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import javax.swing.JLabel;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.event.ListSelectionListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.TableColumnModel;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import net.adrianromero.scripting.ScriptEngine;import net.adrianromero.scripting.ScriptException;import net.adrianromero.scripting.ScriptFactory;import net.adrianromero.tpv.forms.AppLocal;import net.adrianromero.tpv.forms.AppView;import net.adrianromero.tpv.forms.DataLogicSystem;import net.adrianromero.tpv.ticket.TicketLineInfo;import org.apache.velocity.VelocityContext;import org.xml.sax.Attributes;import org.xml.sax.InputSource;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class JTicketLines extends javax.swing.JPanel {    private static SAXParser m_sp = null;        private TicketTableModel m_jTableModel;        /** Creates new form JLinesTicket */    public JTicketLines(AppView oApp) {                initComponents();          ColumnTicket[] acolumns = new ColumnTicket[0];        String sTicketLine = oApp.lookupDataLogic(DataLogicSystem.class).getResourceAsXML("Ticket.Line");        if (sTicketLine != null) {            try {                if (m_sp == null) {                    SAXParserFactory spf = SAXParserFactory.newInstance();                    m_sp = spf.newSAXParser();                }                ColumnsHandler columnshandler = new ColumnsHandler();                m_sp.parse(new InputSource(new StringReader(sTicketLine)), columnshandler);                acolumns = columnshandler.getColumns();            } catch (ParserConfigurationException ePC) {                System.out.println("Error en el analizador XML. Consulte con su administrador");            } catch (SAXException eSAX) {                System.out.println("El archivo no es un documento XML valido. Error de analisis.");            } catch (IOException eIO) {                System.out.println("Error al leer el archivo. Consulte con su administrador.");            }        }                // la tabla.                m_jTableModel = new TicketTableModel(oApp, acolumns);//        for (int i = 0; i < m_acolumns.length; i++) {//            m_jTableModel.addColumn(AppLocal.getIntString(m_acolumns[i].name));    //        }               m_jTicketTable.setModel(m_jTableModel);                        m_jTicketTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);        TableColumnModel jColumns = m_jTicketTable.getColumnModel();        for (int i = 0; i < acolumns.length; i++) {            jColumns.getColumn(i).setPreferredWidth(acolumns[i].width);            jColumns.getColumn(i).setResizable(false);        }                       m_jScrollTableTicket.getVerticalScrollBar().setPreferredSize(new Dimension(35, 35));               m_jTicketTable.getTableHeader().setReorderingAllowed(false);                 m_jTicketTable.setDefaultRenderer(Object.class, new TicketCellRenderer(acolumns));        m_jTicketTable.setRowHeight(40);        m_jTicketTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);                 // reseteo la tabla...        m_jTableModel.clear();    }        public void addListSelectionListener(ListSelectionListener l) {                m_jTicketTable.getSelectionModel().addListSelectionListener(l);    }    public void removeListSelectionListener(ListSelectionListener l) {        m_jTicketTable.getSelectionModel().removeListSelectionListener(l);    }        public void clearTicketLines() {                           m_jTableModel.clear();    }        public void setTicketLine(int index, TicketLineInfo oLine){                m_jTableModel.setRow(index, oLine);      }        public void addTicketLine(TicketLineInfo oLine) {        m_jTableModel.addRow(oLine);                // Selecciono la que acabamos de anadir.                    setSelectedIndex(m_jTableModel.getRowCount() - 1);       }            public void insertTicketLine(int index, TicketLineInfo oLine) {        m_jTableModel.insertRow(index, oLine);                // Selecciono la que acabamos de anadir.                    setSelectedIndex(index);       }         public void removeTicketLine(int i){        m_jTableModel.removeRow(i);        // Escojo una a seleccionar        if (i >= m_jTableModel.getRowCount()) {            i = m_jTableModel.getRowCount() - 1;        }        if ((i >= 0) && (i < m_jTableModel.getRowCount())) {            // Solo seleccionamos si podemos.            setSelectedIndex(i);        }    }        public void setSelectedIndex(int i){                // Seleccionamos        m_jTicketTable.getSelectionModel().setSelectionInterval(i, i);        // Hacemos visible la seleccion.        Rectangle oRect = m_jTicketTable.getCellRect(i, 0, true);        m_jTicketTable.scrollRectToVisible(oRect);    }        public int getSelectedIndex() {        return m_jTicketTable.getSelectionModel().getMinSelectionIndex(); // solo sera uno, luego no importa...    }        public void selectionDown() {                int i = m_jTicketTable.getSelectionModel().getMaxSelectionIndex();        if (i < 0){            i =  0; // No hay ninguna seleccionada        } else {            i ++;            if (i >= m_jTableModel.getRowCount()) {                i = m_jTableModel.getRowCount() - 1;            }        }        if ((i >= 0) && (i < m_jTableModel.getRowCount())) {            // Solo seleccionamos si podemos.                 setSelectedIndex(i);        }    }        public void selectionUp() {                int i = m_jTicketTable.getSelectionModel().getMinSelectionIndex();        if (i < 0){            i = m_jTableModel.getRowCount() - 1; // No hay ninguna seleccionada        } else {            i --;            if (i < 0) {                i = 0;            }        }        if ((i >= 0) && (i < m_jTableModel.getRowCount())) {            // Solo seleccionamos si podemos.            setSelectedIndex(i);        }    }        private static class TicketCellRenderer extends DefaultTableCellRenderer {                private ColumnTicket[] m_acolumns;                        public TicketCellRenderer(ColumnTicket[] acolumns) {            m_acolumns = acolumns;        }                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){                        JLabel aux = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);            aux.setVerticalAlignment(javax.swing.SwingConstants.TOP);            aux.setHorizontalAlignment(m_acolumns[column].align);            return aux;        }    }        private static class TicketTableModel extends AbstractTableModel {                private AppView m_App;        private ColumnTicket[] m_acolumns;        private ArrayList m_rows = new ArrayList();                public TicketTableModel(AppView app, ColumnTicket[] acolumns) {            m_App = app;            m_acolumns = acolumns;        }        public int getRowCount() {            return m_rows.size();        }        public int getColumnCount() {            return m_acolumns.length;        }        public String getColumnName(int column) {            return AppLocal.getIntString(m_acolumns[column].name);            // return m_acolumns[column].name;        }        public Object getValueAt(int row, int column) {            return ((String[]) m_rows.get(row))[column];        }          public boolean isCellEditable(int row, int column) {            return false;        }                public void clear() {            int old = getRowCount();            if (old > 0) {                 m_rows.clear();                fireTableRowsDeleted(0, old - 1);            }        }                public void setRow(int index, TicketLineInfo oLine){                        String[] row = (String []) m_rows.get(index);            for (int i = 0; i < m_acolumns.length; i++) {                try {                    ScriptEngine script = ScriptFactory.getScriptEngine(ScriptFactory.VELOCITY);                    script.put("ticketline", oLine);                    row[i] = script.eval(m_acolumns[i].value).toString();                } catch (ScriptException e) {                    row[i] = null;                }                 fireTableCellUpdated(index, i);            }                     }                        public void addRow(TicketLineInfo oLine) {                        insertRow(m_rows.size(), oLine);        }                public void insertRow(int index, TicketLineInfo oLine) {                        String[] row = new String[m_acolumns.length];            for (int i = 0; i < m_acolumns.length; i++) {                try {                    ScriptEngine script = ScriptFactory.getScriptEngine(ScriptFactory.VELOCITY);                    script.put("ticketline", oLine);                    row[i] = script.eval(m_acolumns[i].value).toString();                } catch (ScriptException e) {                    row[i] = null;                }              }                         m_rows.add(index, row);            fireTableRowsInserted(index, index);        }                public void removeRow(int row) {            m_rows.remove(row);            fireTableRowsDeleted(row, row);        }            }        private static class ColumnsHandler extends DefaultHandler {                private ArrayList m_columns = null;                public ColumnTicket[] getColumns() {            return (ColumnTicket[]) m_columns.toArray(new ColumnTicket[m_columns.size()]);        }                public void startDocument() throws SAXException {             m_columns = new ArrayList();        }        public void endDocument() throws SAXException {}            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{            if ("column".equals(qName)){                ColumnTicket c = new ColumnTicket();                c.name = attributes.getValue("name");                c.width = Integer.parseInt(attributes.getValue("width"));                String sAlign = attributes.getValue("align");                if ("right".equals(sAlign)) {                    c.align = javax.swing.SwingConstants.RIGHT;                } else if ("center".equals(sAlign)) {                    c.align = javax.swing.SwingConstants.CENTER;                } else {                    c.align = javax.swing.SwingConstants.LEFT;                }                c.value = attributes.getValue("value");                m_columns.add(c);            }        }              public void endElement(String uri, String localName, String qName) throws SAXException {}        public void characters(char[] ch, int start, int length) throws SAXException {}    }        private static class ColumnTicket {        public String name;        public int width;        public int align;        public String value;    }        /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents    private void initComponents() {        m_jScrollTableTicket = new javax.swing.JScrollPane();        m_jTicketTable = new javax.swing.JTable();        setLayout(new java.awt.BorderLayout());        m_jScrollTableTicket.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);        m_jScrollTableTicket.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);        m_jTicketTable.setFocusable(false);        m_jTicketTable.setIntercellSpacing(new java.awt.Dimension(0, 1));        m_jTicketTable.setRequestFocusEnabled(false);        m_jTicketTable.setShowVerticalLines(false);        m_jScrollTableTicket.setViewportView(m_jTicketTable);        add(m_jScrollTableTicket, java.awt.BorderLayout.CENTER);    }// </editor-fold>//GEN-END:initComponents            // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JScrollPane m_jScrollTableTicket;    private javax.swing.JTable m_jTicketTable;    // End of variables declaration//GEN-END:variables    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -