Summary Measures

Download

.jar file
source code

Java Code

Main.java
package summarymeasures;

/**
 * Main.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class Main {
     public static void main(String[] args) {
         new MeasuresWindow();         
    }
}
Model.java
package summarymeasures;

import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;

/**
 * Model.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class Model {
    
    private EventListenerList listenerList;
    private final ChangeEvent changeEvent;
    
    public Model(){        
        listenerList = new EventListenerList();
        changeEvent = new ChangeEvent(this);
    }
    
    public void addChangeListener(ChangeListener l){
        listenerList.add(ChangeListener.class, l);        
    }
    public void removeChangeListener(ChangeListener l){
        listenerList.remove(ChangeListener.class, l);        
    }

    protected void fireStateChanged() {
        Object[] listeners = listenerList.getListenerList();
        for(int i = listeners.length-2; i>=0; i-=2){
            if(listeners[i] == ChangeListener.class)
                ((ChangeListener)listeners[i+1]).stateChanged(changeEvent);
        }
    }
}
InputModel.java
package summarymeasures;

/**
 * InputModel.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class InputModel extends Model{
    
    private String input;
    
    public InputModel(){
        input = "0";
    }    
    public String getInput(){
        return input;
    }    
    public void addInput(String newInput){
        if(input.equals("0"))
            input = newInput;
        else
            input += newInput;
        fireStateChanged();
    } 
    public void resetInput(){
        input = "0";
        fireStateChanged();
    }    
}
OutputModel.java
package summarymeasures;

import java.util.ArrayList;

/**
 * OutputModel.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class OutputModel extends Model{
    
    private ArrayList outputs;
    private String output;
    private String noval;
    private String activeRadio;
    
    public OutputModel(){
        outputs = new ArrayList();
        noval = "No input available.";
        output = noval;
        activeRadio = "amount";
    }    
    public void addOutput(String input){        
        outputs.add(Integer.parseInt(input));
        setOutput();
        fireStateChanged();
    }    
    public void setNum(){
        if(outputs.size()>0)
            output = "" + outputs.size();
        else
            output = noval;
        fireStateChanged();
    }    
    public void setSum(){
        if(outputs.size()>0)
            output = "" + getSum();
        else 
            output = noval;
        fireStateChanged();
    }
    public void setAvg(){
        if(outputs.size()>0)
            output = "" + getAvg();
        else
            output = noval;
        fireStateChanged();
    }    
    public void setVar(){
        double sum = 0;
        double avg = getAvg();
        for(int x=0; x0)
            output = "" + sum/(double)outputs.size();
        else
            output = noval;
        fireStateChanged();
    }
    
    public void setOutput() {
        if(activeRadio.equals("amount")){
            setNum();            
        }
        else if(activeRadio.equals("sum")){
            setSum();            
        }
        else if(activeRadio.equals("avg")){
            setAvg();            
        }
        else{
            setVar();
        }
    }
    public void setActiveRadio(String active){
        activeRadio = active;
        setOutput();
    }
    public int getSum(){
        int sum = 0;
        for(int num : outputs)
            sum+=num;
        return sum;
    }
    public double getAvg(){
        return (double)getSum()/(double)outputs.size();        
    }
    public String getOutput(){
        return output;
    }    
    public void resetOutput(){
        outputs.clear();
        output = noval;
        fireStateChanged();
    }
}
InputField.java
package summarymeasures;

import java.awt.Dimension;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * InputField.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class InputField extends JTextField implements ChangeListener{
    
    private InputModel model;
    
    public InputField(InputModel model){        
        super(model.getInput());
        setEditable(false);
        setHorizontalAlignment(JTextField.RIGHT);
        setPreferredSize(new Dimension(150,20));
        this.model = model;
        model.addChangeListener(this);
    }
    public void stateChanged(ChangeEvent e) {
        setText(model.getInput());
    }
}
InputButton.java
package summarymeasures;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

/**
 * InputButton.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class InputButton extends JButton implements ActionListener{
    
    private InputModel inModel;
    private OutputModel outModel;
    private String text;
    
    public InputButton(InputModel inModel, OutputModel outModel, String text){
        super(text);
        this.text = text;
        this.inModel = inModel;
        this.outModel = outModel;
        addActionListener(this);
    }
    public void actionPerformed(ActionEvent e) {
        if(text.equals("ENT")){
            outModel.addOutput(inModel.getInput());
            inModel.resetInput();            
        }
        else if(text.equals("DEL")){
            inModel.resetInput();
            outModel.resetOutput();            
        }
        else{
            inModel.addInput(text);            
        }
    }
}
OutputField.java
package summarymeasures;

import java.awt.Dimension;
import javax.swing.JLabel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * OutputField.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class OutputField extends JLabel implements ChangeListener{
    
    private OutputModel model;
    
    public OutputField(OutputModel model){
        super(model.getOutput() + " ");
        setHorizontalAlignment(JLabel.RIGHT);
        setPreferredSize(new Dimension(150,20));
        
        this.model = model;
        model.addChangeListener(this);
    }
    public void stateChanged(ChangeEvent e) {
        setText(model.getOutput() + " ");
    }
}
OutputRadioBtn.java
package summarymeasures;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JRadioButton;

/**
 * OutputRadioBtn.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class OutputRadioBtn extends JRadioButton implements ActionListener{
    
    private OutputModel outModel;
    private String text;
    private String actCmd;
    
    public OutputRadioBtn(OutputModel outModel, String text, String actCmd){
        super(text);
        setActionCommand(actCmd);
        this.text = text;
        this.actCmd = actCmd;
        this.outModel = outModel;
        addActionListener(this);        
    }

    public void actionPerformed(ActionEvent e) {
        outModel.setActiveRadio(actCmd);
    }
}
MeasuresWindow.java
package summarymeasures;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * MeasuresWindow.java
 * Created by Stijn Strickx on Mar. 2 2008
 * Copyright 2008 Stijn Strickx, All rights reserved
 */
public class MeasuresWindow {
    
    public MeasuresWindow(){
        InputModel inModel = new InputModel();
        OutputModel outModel = new OutputModel();
        JPanel buttonPanel = new JPanel();          
        JPanel leftPanel = new JPanel();
        JPanel radioPanel = new JPanel();
        JPanel rightPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4,3));
        leftPanel.setLayout(new BorderLayout());
        radioPanel.setLayout(new GridLayout(4,1));
        rightPanel.setLayout(new BorderLayout());
        for(int i=1;i<=10;i++){
            buttonPanel.add(new InputButton(inModel, outModel, ""+(i%10)));              
        }
        buttonPanel.add(new InputButton(inModel, outModel, "ENT"));
        buttonPanel.add(new InputButton(inModel, outModel, "DEL"));
        leftPanel.add(new InputField(inModel), BorderLayout.NORTH);
        leftPanel.add(buttonPanel, BorderLayout.SOUTH);
        OutputRadioBtn[] radios = new OutputRadioBtn[4];
        ButtonGroup radioGroup = new ButtonGroup();
        radios[0] = new OutputRadioBtn(outModel,"amount","amount");
        radios[1] = new OutputRadioBtn(outModel,"sum","sum");
        radios[2] = new OutputRadioBtn(outModel,"average","avg");
        radios[3] = new OutputRadioBtn(outModel,"variance","var");
        radios[0].setSelected(true);
        for(int x=0;x

Home | Code | Learn
© 2007-2008 ProgLogic, all rights reserved. | ProgLogic.com is created by Stijn Strickx. | e-mail