Package org.ofbiz.pos.screen

Source Code of org.ofbiz.pos.screen.NumericKeypad

/*******************************************************************************
* 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.Locale;

import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.pos.PosTransaction;

import net.xoetrope.swing.XButton;
import net.xoetrope.swing.XDialog;
import net.xoetrope.swing.XEdit;
import net.xoetrope.xui.PageSupport;
import net.xoetrope.xui.XPage;
import net.xoetrope.xui.events.XEventHelper;

@SuppressWarnings("serial")
public class NumericKeypad extends XPage
{
    public static final String module = NumericKeypad.class.getName();

    XEdit m_edit = null;
    XDialog m_dialog = null;
    PosScreen m_pos = null;
    PageSupport m_pageSupport = null;

    boolean m_minus = false;
    boolean m_percent = false;
    String originalText;

    public NumericKeypad(PosScreen pos) {
        m_pos = pos;
        m_pageSupport = pageMgr.loadPage(m_pos.getScreenLocation() + "/dialog/numerickeypad");
        m_dialog = (XDialog) m_pageSupport;
        m_edit = (XEdit) m_pageSupport.findComponent("numeric_input");
        m_edit.setText("");
        m_dialog.setCaption(UtilProperties.getMessage(PosTransaction.resource, "PosVirtualNumPadTitle", Locale.getDefault()));

    }

    public String openDlg() {
        setupEvents();
        originalText = getText();

        m_dialog.pack();
        m_dialog.showDialog(this);

        return m_edit.getText();
    }

    // call before openDlg
    public void setText(String text) {
        clear();
        m_edit.setText(text);
    }

    public String getText() {
        return m_edit.getText();
    }

    //call before openDlg
    public void setMinus(boolean minus) {
        m_minus = minus;
    }

    public boolean getMinus() {
        return m_minus;
    }

    //call before openDlg
    public void setPercent(boolean percent) {
        if (percent) {
            disableButton("menuCancel");
        }
        m_percent = percent;
    }

    public boolean getPercent() {
        return m_percent;
    }

    private void disableButton(String button) {
        XButton xbutton = (XButton) m_dialog.findComponent(button);
        xbutton.setVisible(false);
    }

    private void setupEvents() {
        XButton button = (XButton) m_dialog.findComponent("numOne");
        XEventHelper.addMouseHandler(this, button, "triggerOne");
        button = (XButton) m_dialog.findComponent("numTwo");
        XEventHelper.addMouseHandler(this, button, "triggerTwo");
        button = (XButton) m_dialog.findComponent("numThree");
        XEventHelper.addMouseHandler(this, button, "triggerThree");
        button = (XButton) m_dialog.findComponent("numFour");
        XEventHelper.addMouseHandler(this, button, "triggerFour");
        button = (XButton) m_dialog.findComponent("numFive");
        XEventHelper.addMouseHandler(this, button, "triggerFive");
        button = (XButton) m_dialog.findComponent("numSix");
        XEventHelper.addMouseHandler(this, button, "triggerSix");
        button = (XButton) m_dialog.findComponent("numSeven");
        XEventHelper.addMouseHandler(this, button, "triggerSeven");
        button = (XButton) m_dialog.findComponent("numEight");
        XEventHelper.addMouseHandler(this, button, "triggerEight");
        button = (XButton) m_dialog.findComponent("numNine");
        XEventHelper.addMouseHandler(this, button, "triggerNine");
        button = (XButton) m_dialog.findComponent("numZero");
        XEventHelper.addMouseHandler(this, button, "triggerZero");
        button = (XButton) m_dialog.findComponent("numDZero");
        XEventHelper.addMouseHandler(this, button, "triggerDoubleZero");
        button = (XButton) m_dialog.findComponent("menuClear");
        XEventHelper.addMouseHandler(this, button, "triggerClear");
        button = (XButton) m_dialog.findComponent("menuEnter");
        XEventHelper.addMouseHandler(this, button, "triggerEnter");
        button = (XButton) m_dialog.findComponent("menuCancel");
        XEventHelper.addMouseHandler(this, button, "triggerCancel");

        if (getMinus()) {
            button = (XButton) m_dialog.findComponent("numMinus");
            XEventHelper.addMouseHandler(this, button, "triggerMinus");
        } else {
            disableButton("numMinus");
        }
        if (getPercent()) {
            button = (XButton) m_dialog.findComponent("numPercent");
            XEventHelper.addMouseHandler(this, button, "triggerMinus");
        } else {
            disableButton("numPercent");
        }

        return;
    }

    public void triggerOne()
    {
        append('1');
    }

    public void triggerTwo()
    {
        append('2');
    }

    public void triggerThree()
    {
        append('3');
    }

    public void triggerFour()
    {
        append('4');
    }

    public void triggerFive()
    {
        append('5');
    }

    public void triggerSix()
    {
        append('6');
    }

    public void triggerSeven()
    {
        append('7');
    }

    public void triggerEight()
    {
        append('8');
    }

    public void triggerNine()
    {
        append('9');
    }

    public void triggerZero()
    {
        append('0');
    }

    public void triggerDoubleZero()
    {
        append("00");
    }

    public void triggerClear()
    {
        clear();
    }

    public void triggerEnter()
    {
        close();
    }

    public void triggerCancel()
    {
        cancel();
    }

    public void triggerMinus()
    {
        prependUnique('-');
    }

    public void triggerPercent()
    {
        prependUnique('%');
    }

    private synchronized void prependUnique(char c) {
        if (wasMouseClicked()) {
            String text = "";
            try {
                text = m_edit.getText();
            } catch (NullPointerException e) {
                // getText throws exception if no text
                text = "";
            } finally {
                text=c+text;
            }
            if (countChars(text, c) > 1) {
                text = stripChars(text, c);
            }
            m_edit.setText(text);

            m_dialog.repaint();
            return;
        }
    }

    private int countChars(String string, char c) {
        int count = 0;
        for(int i=0; i<string.length(); i++) {
            if (string.charAt(i) == c) {
                count++;
            }
        }
        return count;
    }

    private String stripChars(String string, char c) {
        StringBuffer buf = new StringBuffer();
        for(int i=0; i<string.length(); i++) {
            char current = string.charAt(i);
            if (current != c) {
                buf.append(current);
            }
        }
        return buf.toString();
    }

    private synchronized void close() {
        if (wasMouseClicked()) {
            m_dialog.closeDlg();
            return;
        }
    }

    private synchronized void clear() {
        if (wasMouseClicked()) {
            String text = "";
            m_edit.setText(text);
            m_dialog.repaint();
            return;
        }
    }

    private synchronized void append(char c) {
        if (wasMouseClicked()) {
            String text = "";
            try {
                text = m_edit.getText();
            } catch (NullPointerException e) {
                // getText throws exception if no text
                text = "";
            } finally {
                m_edit.setText(text + c);
            }
            m_dialog.repaint();
            //update the screen?
            return;
        }
    }

    private synchronized void cancel() {
        if (wasMouseClicked()) {
            this.setText(originalText);
            m_dialog.closeDlg();
            return;
        }
    }

    private synchronized void append(String c) {
        if (wasMouseClicked()) {
            String text = "";
            try {
                text = m_edit.getText();
            } catch (NullPointerException e) {
                // getText throws exception if no text
                text = "";
            } finally {
                m_edit.setText(text + c);
            }
            m_dialog.repaint();
            //update the screen?
            return;
        }
    }
}
TOP

Related Classes of org.ofbiz.pos.screen.NumericKeypad

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.